Lines Matching refs:skb
65 struct sk_buff *skb) in carl9170_get_queue() argument
67 return __carl9170_get_queue(ar, skb_get_queue_mapping(skb)); in carl9170_get_queue()
76 static void carl9170_tx_accounting(struct ar9170 *ar, struct sk_buff *skb) in carl9170_tx_accounting() argument
83 queue = skb_get_queue_mapping(skb); in carl9170_tx_accounting()
108 struct sk_buff *skb) in __carl9170_get_tx_sta() argument
110 struct _carl9170_tx_superframe *super = (void *) skb->data; in __carl9170_get_tx_sta()
138 static void carl9170_tx_ps_unblock(struct ar9170 *ar, struct sk_buff *skb) in carl9170_tx_ps_unblock() argument
144 sta = __carl9170_get_tx_sta(ar, skb); in carl9170_tx_ps_unblock()
156 static void carl9170_tx_accounting_free(struct ar9170 *ar, struct sk_buff *skb) in carl9170_tx_accounting_free() argument
160 queue = skb_get_queue_mapping(skb); in carl9170_tx_accounting_free()
190 static int carl9170_alloc_dev_space(struct ar9170 *ar, struct sk_buff *skb) in carl9170_alloc_dev_space() argument
192 struct _carl9170_tx_superframe *super = (void *) skb->data; in carl9170_alloc_dev_space()
198 chunks = DIV_ROUND_UP(skb->len, ar->fw.mem_block_size); in carl9170_alloc_dev_space()
213 super = (void *) skb->data; in carl9170_alloc_dev_space()
226 static void carl9170_release_dev_space(struct ar9170 *ar, struct sk_buff *skb) in carl9170_release_dev_space() argument
228 struct _carl9170_tx_superframe *super = (void *) skb->data; in carl9170_release_dev_space()
253 atomic_add(DIV_ROUND_UP(skb->len, ar->fw.mem_block_size), in carl9170_release_dev_space()
267 struct sk_buff *skb; in carl9170_tx_release() local
272 skb = container_of((void *) txinfo, struct sk_buff, cb); in carl9170_tx_release()
295 super = (void *)skb->data; in carl9170_tx_release()
316 ieee80211_free_txskb(ar->hw, skb); in carl9170_tx_release()
326 skb_pull(skb, sizeof(struct _carl9170_tx_superframe)); in carl9170_tx_release()
327 ieee80211_tx_status_irqsafe(ar->hw, skb); in carl9170_tx_release()
330 void carl9170_tx_get_skb(struct sk_buff *skb) in carl9170_tx_get_skb() argument
333 (IEEE80211_SKB_CB(skb))->rate_driver_data; in carl9170_tx_get_skb()
337 int carl9170_tx_put_skb(struct sk_buff *skb) in carl9170_tx_put_skb() argument
340 (IEEE80211_SKB_CB(skb))->rate_driver_data; in carl9170_tx_put_skb()
379 struct sk_buff *skb, struct ieee80211_tx_info *txinfo) in carl9170_tx_status_process_ampdu() argument
381 struct _carl9170_tx_superframe *super = (void *) skb->data; in carl9170_tx_status_process_ampdu()
393 sta = __carl9170_get_tx_sta(ar, skb); in carl9170_tx_status_process_ampdu()
437 static void carl9170_tx_bar_status(struct ar9170 *ar, struct sk_buff *skb, in carl9170_tx_bar_status() argument
440 struct _carl9170_tx_superframe *super = (void *) skb->data; in carl9170_tx_bar_status()
455 int queue = skb_get_queue_mapping(skb); in carl9170_tx_bar_status()
459 if (entry->skb == skb) { in carl9170_tx_bar_status()
476 void carl9170_tx_status(struct ar9170 *ar, struct sk_buff *skb, in carl9170_tx_status() argument
481 carl9170_tx_accounting_free(ar, skb); in carl9170_tx_status()
483 txinfo = IEEE80211_SKB_CB(skb); in carl9170_tx_status()
485 carl9170_tx_bar_status(ar, skb, txinfo); in carl9170_tx_status()
493 carl9170_tx_status_process_ampdu(ar, skb, txinfo); in carl9170_tx_status()
495 carl9170_tx_ps_unblock(ar, skb); in carl9170_tx_status()
496 carl9170_tx_put_skb(skb); in carl9170_tx_status()
500 void carl9170_tx_callback(struct ar9170 *ar, struct sk_buff *skb) in carl9170_tx_callback() argument
502 struct ieee80211_tx_info *txinfo = IEEE80211_SKB_CB(skb); in carl9170_tx_callback()
509 if (carl9170_tx_put_skb(skb)) in carl9170_tx_callback()
516 struct sk_buff *skb; in carl9170_get_queued_skb() local
519 skb_queue_walk(queue, skb) { in carl9170_get_queued_skb()
520 struct _carl9170_tx_superframe *txc = (void *) skb->data; in carl9170_get_queued_skb()
525 __skb_unlink(skb, queue); in carl9170_get_queued_skb()
528 carl9170_release_dev_space(ar, skb); in carl9170_get_queued_skb()
529 return skb; in carl9170_get_queued_skb()
561 struct sk_buff *skb; in carl9170_check_queue_stop_timeout() local
569 skb = skb_peek(&ar->tx_status[i]); in carl9170_check_queue_stop_timeout()
571 if (!skb) in carl9170_check_queue_stop_timeout()
574 txinfo = IEEE80211_SKB_CB(skb); in carl9170_check_queue_stop_timeout()
606 struct sk_buff *skb; in carl9170_tx_ampdu_timeout() local
617 skb = skb_peek(&iter->queue); in carl9170_tx_ampdu_timeout()
618 if (!skb) in carl9170_tx_ampdu_timeout()
621 txinfo = IEEE80211_SKB_CB(skb); in carl9170_tx_ampdu_timeout()
661 struct sk_buff *skb; in __carl9170_tx_process_status() local
668 skb = carl9170_get_queued_skb(ar, cookie, &ar->tx_status[q]); in __carl9170_tx_process_status()
669 if (!skb) { in __carl9170_tx_process_status()
677 txinfo = IEEE80211_SKB_CB(skb); in __carl9170_tx_process_status()
686 carl9170_tx_status(ar, skb, success); in __carl9170_tx_process_status()
871 struct sk_buff *skb) in carl9170_tx_get_rates() argument
878 info = IEEE80211_SKB_CB(skb); in carl9170_tx_get_rates()
880 ieee80211_get_tx_rates(vif, sta, skb, in carl9170_tx_get_rates()
887 struct sk_buff *skb) in carl9170_tx_apply_rateset() argument
891 struct _carl9170_tx_superframe *txc = (void *) skb->data; in carl9170_tx_apply_rateset()
896 info = IEEE80211_SKB_CB(skb); in carl9170_tx_apply_rateset()
957 struct sk_buff *skb) in carl9170_tx_prepare() argument
979 hw_queue = ar9170_qmap[carl9170_get_queue(ar, skb)]; in carl9170_tx_prepare()
981 hdr = (void *)skb->data; in carl9170_tx_prepare()
982 info = IEEE80211_SKB_CB(skb); in carl9170_tx_prepare()
983 len = skb->len; in carl9170_tx_prepare()
994 txc = (void *)skb_push(skb, sizeof(*txc)); in carl9170_tx_prepare()
1064 txc->s.len = cpu_to_le16(skb->len); in carl9170_tx_prepare()
1075 skb_pull(skb, sizeof(*txc)); in carl9170_tx_prepare()
1079 static void carl9170_set_immba(struct ar9170 *ar, struct sk_buff *skb) in carl9170_set_immba() argument
1083 super = (void *) skb->data; in carl9170_set_immba()
1087 static void carl9170_set_ampdu_params(struct ar9170 *ar, struct sk_buff *skb) in carl9170_set_ampdu_params() argument
1092 super = (void *) skb->data; in carl9170_set_ampdu_params()
1128 struct sk_buff *skb, *first; in carl9170_tx_ampdu() local
1176 while ((skb = skb_peek(&tid_info->queue))) { in carl9170_tx_ampdu()
1178 if (unlikely(carl9170_get_seq(skb) != seq)) in carl9170_tx_ampdu()
1192 carl9170_tx_apply_rateset(ar, tx_info_first, skb); in carl9170_tx_ampdu()
1196 __skb_unlink(skb, &tid_info->queue); in carl9170_tx_ampdu()
1198 __skb_queue_tail(&agg, skb); in carl9170_tx_ampdu()
1242 struct sk_buff *skb; in carl9170_tx_pick_skb() local
1249 skb = skb_peek(queue); in carl9170_tx_pick_skb()
1250 if (unlikely(!skb)) in carl9170_tx_pick_skb()
1253 if (carl9170_alloc_dev_space(ar, skb)) in carl9170_tx_pick_skb()
1256 __skb_unlink(skb, queue); in carl9170_tx_pick_skb()
1259 info = IEEE80211_SKB_CB(skb); in carl9170_tx_pick_skb()
1263 return skb; in carl9170_tx_pick_skb()
1270 void carl9170_tx_drop(struct ar9170 *ar, struct sk_buff *skb) in carl9170_tx_drop() argument
1277 super = (void *)skb->data; in carl9170_tx_drop()
1279 ar9170_qmap[carl9170_get_queue(ar, skb)]); in carl9170_tx_drop()
1283 static bool carl9170_tx_ps_drop(struct ar9170 *ar, struct sk_buff *skb) in carl9170_tx_ps_drop() argument
1290 sta = __carl9170_get_tx_sta(ar, skb); in carl9170_tx_ps_drop()
1295 tx_info = IEEE80211_SKB_CB(skb); in carl9170_tx_ps_drop()
1306 carl9170_release_dev_space(ar, skb); in carl9170_tx_ps_drop()
1307 carl9170_tx_status(ar, skb, false); in carl9170_tx_ps_drop()
1316 static void carl9170_bar_check(struct ar9170 *ar, struct sk_buff *skb) in carl9170_bar_check() argument
1318 struct _carl9170_tx_superframe *super = (void *) skb->data; in carl9170_bar_check()
1322 skb->len >= sizeof(struct ieee80211_bar)) { in carl9170_bar_check()
1324 unsigned int queue = skb_get_queue_mapping(skb); in carl9170_bar_check()
1328 entry->skb = skb; in carl9170_bar_check()
1338 struct sk_buff *skb; in carl9170_tx() local
1351 skb = carl9170_tx_pick_skb(ar, &ar->tx_pending[i]); in carl9170_tx()
1352 if (unlikely(!skb)) in carl9170_tx()
1355 if (unlikely(carl9170_tx_ps_drop(ar, skb))) in carl9170_tx()
1358 carl9170_bar_check(ar, skb); in carl9170_tx()
1367 skb_queue_tail(&ar->tx_status[q], skb); in carl9170_tx()
1377 carl9170_tx_get_skb(skb); in carl9170_tx()
1379 carl9170_usb_tx(ar, skb); in carl9170_tx()
1392 struct ieee80211_sta *sta, struct sk_buff *skb, in carl9170_tx_ampdu_queue() argument
1401 tid = carl9170_get_tid(skb); in carl9170_tx_ampdu_queue()
1402 seq = carl9170_get_seq(skb); in carl9170_tx_ampdu_queue()
1427 __skb_queue_tail(&agg->queue, skb); in carl9170_tx_ampdu_queue()
1436 __skb_queue_after(&agg->queue, iter, skb); in carl9170_tx_ampdu_queue()
1441 __skb_queue_head(&agg->queue, skb); in carl9170_tx_ampdu_queue()
1462 carl9170_tx_status(ar, skb, false); in carl9170_tx_ampdu_queue()
1469 struct sk_buff *skb) in carl9170_op_tx() argument
1480 info = IEEE80211_SKB_CB(skb); in carl9170_op_tx()
1483 if (unlikely(carl9170_tx_prepare(ar, sta, skb))) in carl9170_op_tx()
1486 carl9170_tx_accounting(ar, skb); in carl9170_op_tx()
1505 run = carl9170_tx_ampdu_queue(ar, sta, skb, info); in carl9170_op_tx()
1510 unsigned int queue = skb_get_queue_mapping(skb); in carl9170_op_tx()
1512 carl9170_tx_get_rates(ar, vif, sta, skb); in carl9170_op_tx()
1513 carl9170_tx_apply_rateset(ar, info, skb); in carl9170_op_tx()
1514 skb_queue_tail(&ar->tx_pending[queue], skb); in carl9170_op_tx()
1522 ieee80211_free_txskb(ar->hw, skb); in carl9170_op_tx()
1564 static bool carl9170_tx_beacon_physet(struct ar9170 *ar, struct sk_buff *skb, in carl9170_tx_beacon_physet() argument
1572 txinfo = IEEE80211_SKB_CB(skb); in carl9170_tx_beacon_physet()
1597 SET_VAL(AR9170_MAC_BCN_HT2_LEN, *plcp, skb->len + FCS_LEN); in carl9170_tx_beacon_physet()
1600 *plcp |= ((skb->len + FCS_LEN) << (3 + 16)) + 0x0400; in carl9170_tx_beacon_physet()
1602 *plcp |= ((skb->len + FCS_LEN) << 16) + 0x0010; in carl9170_tx_beacon_physet()
1610 struct sk_buff *skb = NULL; in carl9170_update_beacon() local
1622 skb = ieee80211_beacon_get_tim(ar->hw, carl9170_get_vif(cvif), in carl9170_update_beacon()
1625 if (!skb) { in carl9170_update_beacon()
1631 data = (__le32 *)skb->data; in carl9170_update_beacon()
1637 len = roundup(skb->len + FCS_LEN, 4); in carl9170_update_beacon()
1659 ht_rate = carl9170_tx_beacon_physet(ar, skb, &ht1, &plcp); in carl9170_update_beacon()
1668 for (i = 0; i < DIV_ROUND_UP(skb->len, 4); i++) { in carl9170_update_beacon()
1687 cvif->beacon = skb; in carl9170_update_beacon()
1695 addr, skb->len + FCS_LEN); in carl9170_update_beacon()
1709 dev_kfree_skb_any(skb); in carl9170_update_beacon()