Lines Matching refs:skb

41 				 struct sk_buff *skb, int group_addr,  in ieee80211_duration()  argument
49 struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb); in ieee80211_duration()
91 hdr = (struct ieee80211_hdr *)skb->data; in ieee80211_duration()
247 skb_get_queue_mapping(tx->skb) == IEEE80211_AC_VO) in ieee80211_tx_h_dynamic_ps()
274 struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)tx->skb->data; in ieee80211_tx_h_check_assoc()
275 struct ieee80211_tx_info *info = IEEE80211_SKB_CB(tx->skb); in ieee80211_tx_h_check_assoc()
341 struct sk_buff *skb; in purge_old_ps_buffers() local
355 skb = skb_dequeue(&ps->bc_buf); in purge_old_ps_buffers()
356 if (skb) { in purge_old_ps_buffers()
358 dev_kfree_skb(skb); in purge_old_ps_buffers()
371 skb = skb_dequeue(&sta->ps_tx_buf[ac]); in purge_old_ps_buffers()
373 if (skb) { in purge_old_ps_buffers()
375 ieee80211_free_txskb(&local->hw, skb); in purge_old_ps_buffers()
388 struct ieee80211_tx_info *info = IEEE80211_SKB_CB(tx->skb); in ieee80211_tx_h_multicast_ps_buf()
389 struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)tx->skb->data; in ieee80211_tx_h_multicast_ps_buf()
445 skb_queue_tail(&ps->bc_buf, tx->skb); in ieee80211_tx_h_multicast_ps_buf()
451 struct sk_buff *skb) in ieee80211_use_mfp() argument
459 if (!ieee80211_is_robust_mgmt_frame(skb)) in ieee80211_use_mfp()
469 struct ieee80211_tx_info *info = IEEE80211_SKB_CB(tx->skb); in ieee80211_tx_h_unicast_ps_buf()
470 struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)tx->skb->data; in ieee80211_tx_h_unicast_ps_buf()
480 int ac = skb_get_queue_mapping(tx->skb); in ieee80211_tx_h_unicast_ps_buf()
520 skb_queue_tail(&sta->ps_tx_buf[ac], tx->skb); in ieee80211_tx_h_unicast_ps_buf()
559 struct ieee80211_tx_info *info = IEEE80211_SKB_CB(tx->skb); in ieee80211_tx_h_check_control_port_protocol()
561 if (unlikely(tx->sdata->control_port_protocol == tx->skb->protocol)) { in ieee80211_tx_h_check_control_port_protocol()
575 struct ieee80211_tx_info *info = IEEE80211_SKB_CB(tx->skb); in ieee80211_tx_h_select_key()
576 struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)tx->skb->data; in ieee80211_tx_h_select_key()
585 ieee80211_is_robust_mgmt_frame(tx->skb) && in ieee80211_tx_h_select_key()
616 tx->skb)) in ieee80211_tx_h_select_key()
647 struct ieee80211_tx_info *info = IEEE80211_SKB_CB(tx->skb); in ieee80211_tx_h_rate_ctrl()
648 struct ieee80211_hdr *hdr = (void *)tx->skb->data; in ieee80211_tx_h_rate_ctrl()
659 len = min_t(u32, tx->skb->len + FCS_LEN, in ieee80211_tx_h_rate_ctrl()
666 txrc.skb = tx->skb; in ieee80211_tx_h_rate_ctrl()
781 struct ieee80211_tx_info *info = IEEE80211_SKB_CB(tx->skb); in ieee80211_tx_h_sequence()
782 struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)tx->skb->data; in ieee80211_tx_h_sequence()
842 struct sk_buff *skb, int hdrlen, in ieee80211_fragment() argument
850 int rem = skb->len - hdrlen - per_fragm; in ieee80211_fragment()
876 memcpy(tmp->cb, skb->cb, sizeof(tmp->cb)); in ieee80211_fragment()
885 skb_copy_queue_mapping(tmp, skb); in ieee80211_fragment()
886 tmp->priority = skb->priority; in ieee80211_fragment()
887 tmp->dev = skb->dev; in ieee80211_fragment()
890 memcpy(skb_put(tmp, hdrlen), skb->data, hdrlen); in ieee80211_fragment()
891 memcpy(skb_put(tmp, fraglen), skb->data + pos, fraglen); in ieee80211_fragment()
897 skb_trim(skb, hdrlen + per_fragm); in ieee80211_fragment()
904 struct sk_buff *skb = tx->skb; in ieee80211_tx_h_fragment() local
905 struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb); in ieee80211_tx_h_fragment()
906 struct ieee80211_hdr *hdr = (void *)skb->data; in ieee80211_tx_h_fragment()
912 __skb_queue_tail(&tx->skbs, skb); in ieee80211_tx_h_fragment()
913 tx->skb = NULL; in ieee80211_tx_h_fragment()
932 if (WARN_ON(skb->len + FCS_LEN <= frag_threshold)) in ieee80211_tx_h_fragment()
943 if (ieee80211_fragment(tx, skb, hdrlen, frag_threshold)) in ieee80211_tx_h_fragment()
949 skb_queue_walk(&tx->skbs, skb) { in ieee80211_tx_h_fragment()
952 hdr = (void *)skb->data; in ieee80211_tx_h_fragment()
953 info = IEEE80211_SKB_CB(skb); in ieee80211_tx_h_fragment()
955 if (!skb_queue_is_last(&tx->skbs, skb)) { in ieee80211_tx_h_fragment()
979 struct sk_buff *skb; in ieee80211_tx_h_stats() local
985 skb_queue_walk(&tx->skbs, skb) { in ieee80211_tx_h_stats()
986 ac = skb_get_queue_mapping(skb); in ieee80211_tx_h_stats()
988 tx->sta->tx_bytes[ac] += skb->len; in ieee80211_tx_h_stats()
1034 struct sk_buff *skb; in ieee80211_tx_h_calculate_duration() local
1039 skb_queue_walk(&tx->skbs, skb) { in ieee80211_tx_h_calculate_duration()
1040 hdr = (void *) skb->data; in ieee80211_tx_h_calculate_duration()
1043 if (!skb_queue_is_last(&tx->skbs, skb)) { in ieee80211_tx_h_calculate_duration()
1044 struct sk_buff *next = skb_queue_next(&tx->skbs, skb); in ieee80211_tx_h_calculate_duration()
1051 ieee80211_duration(tx, skb, group_addr, next_len); in ieee80211_tx_h_calculate_duration()
1060 struct sk_buff *skb, in ieee80211_tx_prep_agg() argument
1109 __skb_queue_tail(&tid_tx->pending, skb); in ieee80211_tx_prep_agg()
1134 struct sta_info *sta, struct sk_buff *skb) in ieee80211_tx_prepare() argument
1138 struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb); in ieee80211_tx_prepare()
1143 tx->skb = skb; in ieee80211_tx_prepare()
1155 hdr = (struct ieee80211_hdr *) skb->data; in ieee80211_tx_prepare()
1167 tx->sdata->control_port_protocol == tx->skb->protocol) { in ieee80211_tx_prepare()
1187 queued = ieee80211_tx_prep_agg(tx, skb, info, in ieee80211_tx_prepare()
1203 skb->len + FCS_LEN <= local->hw.wiphy->frag_threshold || in ieee80211_tx_prepare()
1221 struct sk_buff *skb) in ieee80211_drv_tx() argument
1223 struct ieee80211_hdr *hdr = (struct ieee80211_hdr *) skb->data; in ieee80211_drv_tx()
1225 struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb); in ieee80211_drv_tx()
1240 u8 tid = skb->priority & IEEE80211_QOS_CTL_TID_MASK; in ieee80211_drv_tx()
1256 skb_queue_tail(&txqi->queue, skb); in ieee80211_drv_tx()
1262 drv_tx(local, &control, skb); in ieee80211_drv_tx()
1272 struct sk_buff *skb = NULL; in ieee80211_tx_dequeue() local
1280 skb = __skb_dequeue(&txqi->queue); in ieee80211_tx_dequeue()
1281 if (!skb) in ieee80211_tx_dequeue()
1288 hdr = (struct ieee80211_hdr *)skb->data; in ieee80211_tx_dequeue()
1292 struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb); in ieee80211_tx_dequeue()
1304 return skb; in ieee80211_tx_dequeue()
1314 struct sk_buff *skb, *tmp; in ieee80211_tx_frags() local
1317 skb_queue_walk_safe(skbs, skb, tmp) { in ieee80211_tx_frags()
1318 struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb); in ieee80211_tx_frags()
1323 __skb_unlink(skb, skbs); in ieee80211_tx_frags()
1324 ieee80211_free_txskb(&local->hw, skb); in ieee80211_tx_frags()
1372 __skb_unlink(skb, skbs); in ieee80211_tx_frags()
1373 ieee80211_drv_tx(local, vif, sta, skb); in ieee80211_tx_frags()
1390 struct sk_buff *skb; in __ieee80211_tx() local
1397 skb = skb_peek(skbs); in __ieee80211_tx()
1398 fc = ((struct ieee80211_hdr *)skb->data)->frame_control; in __ieee80211_tx()
1399 info = IEEE80211_SKB_CB(skb); in __ieee80211_tx()
1419 vif->hw_queue[skb_get_queue_mapping(skb)]; in __ieee80211_tx()
1421 dev_kfree_skb(skb); in __ieee80211_tx()
1451 struct ieee80211_tx_info *info = IEEE80211_SKB_CB(tx->skb); in invoke_tx_handlers()
1470 __skb_queue_tail(&tx->skbs, tx->skb); in invoke_tx_handlers()
1471 tx->skb = NULL; in invoke_tx_handlers()
1488 if (tx->skb) in invoke_tx_handlers()
1489 ieee80211_free_txskb(&tx->local->hw, tx->skb); in invoke_tx_handlers()
1502 struct ieee80211_vif *vif, struct sk_buff *skb, in ieee80211_tx_prepare_skb() argument
1506 struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb); in ieee80211_tx_prepare_skb()
1510 if (ieee80211_tx_prepare(sdata, &tx, NULL, skb) == TX_DROP) in ieee80211_tx_prepare_skb()
1515 info->hw_queue = vif->hw_queue[skb_get_queue_mapping(skb)]; in ieee80211_tx_prepare_skb()
1529 if (WARN_ON(skb2 != skb || !skb_queue_empty(&tx.skbs))) { in ieee80211_tx_prepare_skb()
1543 struct sta_info *sta, struct sk_buff *skb, in ieee80211_tx() argument
1549 struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb); in ieee80211_tx()
1553 if (unlikely(skb->len < 10)) { in ieee80211_tx()
1554 dev_kfree_skb(skb); in ieee80211_tx()
1559 led_len = skb->len; in ieee80211_tx()
1560 res_prepare = ieee80211_tx_prepare(sdata, &tx, sta, skb); in ieee80211_tx()
1563 ieee80211_free_txskb(&local->hw, skb); in ieee80211_tx()
1573 sdata->vif.hw_queue[skb_get_queue_mapping(skb)]; in ieee80211_tx()
1585 struct sk_buff *skb, in ieee80211_skb_resize() argument
1593 tail_need -= skb_tailroom(skb); in ieee80211_skb_resize()
1597 if (skb_cloned(skb) && in ieee80211_skb_resize()
1599 !skb_clone_writable(skb, ETH_HLEN) || in ieee80211_skb_resize()
1607 if (pskb_expand_head(skb, head_need, tail_need, GFP_ATOMIC)) { in ieee80211_skb_resize()
1617 struct sta_info *sta, struct sk_buff *skb) in ieee80211_xmit() argument
1620 struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb); in ieee80211_xmit()
1621 struct ieee80211_hdr *hdr = (struct ieee80211_hdr *) skb->data; in ieee80211_xmit()
1630 headroom -= skb_headroom(skb); in ieee80211_xmit()
1633 if (ieee80211_skb_resize(sdata, skb, headroom, may_encrypt)) { in ieee80211_xmit()
1634 ieee80211_free_txskb(&local->hw, skb); in ieee80211_xmit()
1638 hdr = (struct ieee80211_hdr *) skb->data; in ieee80211_xmit()
1644 if (mesh_nexthop_resolve(sdata, skb)) in ieee80211_xmit()
1651 ieee80211_set_qos_hdr(sdata, skb); in ieee80211_xmit()
1652 ieee80211_tx(sdata, sta, skb, false); in ieee80211_xmit()
1655 static bool ieee80211_parse_tx_radiotap(struct sk_buff *skb) in ieee80211_parse_tx_radiotap() argument
1659 (struct ieee80211_radiotap_header *) skb->data; in ieee80211_parse_tx_radiotap()
1660 struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb); in ieee80211_parse_tx_radiotap()
1661 int ret = ieee80211_radiotap_iterator_init(&iterator, rthdr, skb->len, in ieee80211_parse_tx_radiotap()
1697 if (skb->len < (iterator._max_length + FCS_LEN)) in ieee80211_parse_tx_radiotap()
1700 skb_trim(skb, skb->len - FCS_LEN); in ieee80211_parse_tx_radiotap()
1733 skb_pull(skb, iterator._max_length); in ieee80211_parse_tx_radiotap()
1738 netdev_tx_t ieee80211_monitor_start_xmit(struct sk_buff *skb, in ieee80211_monitor_start_xmit() argument
1744 (struct ieee80211_radiotap_header *)skb->data; in ieee80211_monitor_start_xmit()
1745 struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb); in ieee80211_monitor_start_xmit()
1753 if (unlikely(skb->len < sizeof(struct ieee80211_radiotap_header))) in ieee80211_monitor_start_xmit()
1761 len_rthdr = ieee80211_get_radiotap_len(skb->data); in ieee80211_monitor_start_xmit()
1764 if (unlikely(skb->len < len_rthdr)) in ieee80211_monitor_start_xmit()
1773 skb_set_mac_header(skb, len_rthdr); in ieee80211_monitor_start_xmit()
1778 skb_set_network_header(skb, len_rthdr); in ieee80211_monitor_start_xmit()
1779 skb_set_transport_header(skb, len_rthdr); in ieee80211_monitor_start_xmit()
1781 if (skb->len < len_rthdr + 2) in ieee80211_monitor_start_xmit()
1784 hdr = (struct ieee80211_hdr *)(skb->data + len_rthdr); in ieee80211_monitor_start_xmit()
1787 if (skb->len < len_rthdr + hdrlen) in ieee80211_monitor_start_xmit()
1795 skb->len >= len_rthdr + hdrlen + sizeof(rfc1042_header) + 2) { in ieee80211_monitor_start_xmit()
1799 skb->protocol = cpu_to_be16((payload[6] << 8) | in ieee80211_monitor_start_xmit()
1809 if (!ieee80211_parse_tx_radiotap(skb)) in ieee80211_monitor_start_xmit()
1873 ieee80211_xmit(sdata, NULL, skb); in ieee80211_monitor_start_xmit()
1881 dev_kfree_skb(skb); in ieee80211_monitor_start_xmit()
1885 static inline bool ieee80211_is_tdls_setup(struct sk_buff *skb) in ieee80211_is_tdls_setup() argument
1887 u16 ethertype = (skb->data[12] << 8) | skb->data[13]; in ieee80211_is_tdls_setup()
1890 skb->len > 14 && in ieee80211_is_tdls_setup()
1891 skb->data[14] == WLAN_TDLS_SNAP_RFTYPE; in ieee80211_is_tdls_setup()
1895 struct sk_buff *skb, in ieee80211_lookup_ra_sta() argument
1913 if (is_multicast_ether_addr(skb->data)) { in ieee80211_lookup_ra_sta()
1917 sta = sta_info_get_bss(sdata, skb->data); in ieee80211_lookup_ra_sta()
1930 sta = sta_info_get(sdata, skb->data); in ieee80211_lookup_ra_sta()
1952 !ieee80211_is_tdls_setup(skb)) in ieee80211_lookup_ra_sta()
1989 struct sk_buff *skb, u32 info_flags, in ieee80211_build_hdr() argument
2017 ethertype = (skb->data[12] << 8) | skb->data[13]; in ieee80211_build_hdr()
2027 memcpy(hdr.addr3, skb->data, ETH_ALEN); in ieee80211_build_hdr()
2028 memcpy(hdr.addr4, skb->data + ETH_ALEN, ETH_ALEN); in ieee80211_build_hdr()
2053 memcpy(hdr.addr1, skb->data, ETH_ALEN); in ieee80211_build_hdr()
2055 memcpy(hdr.addr3, skb->data + ETH_ALEN, ETH_ALEN); in ieee80211_build_hdr()
2064 memcpy(hdr.addr3, skb->data, ETH_ALEN); in ieee80211_build_hdr()
2065 memcpy(hdr.addr4, skb->data + ETH_ALEN, ETH_ALEN); in ieee80211_build_hdr()
2075 if (!is_multicast_ether_addr(skb->data)) { in ieee80211_build_hdr()
2079 mpath = mesh_path_lookup(sdata, skb->data); in ieee80211_build_hdr()
2090 mppath = mpp_path_lookup(sdata, skb->data); in ieee80211_build_hdr()
2102 if (ether_addr_equal(sdata->vif.addr, skb->data + ETH_ALEN) && in ieee80211_build_hdr()
2103 !(mppath && !ether_addr_equal(mppath->mpp, skb->data))) { in ieee80211_build_hdr()
2105 skb->data, skb->data + ETH_ALEN); in ieee80211_build_hdr()
2115 const u8 *mesh_da = skb->data; in ieee80211_build_hdr()
2128 skb->data + ETH_ALEN, NULL); in ieee80211_build_hdr()
2132 sdata, &mesh_hdr, skb->data, in ieee80211_build_hdr()
2133 skb->data + ETH_ALEN); in ieee80211_build_hdr()
2150 memcpy(hdr.addr1, skb->data, ETH_ALEN); in ieee80211_build_hdr()
2151 memcpy(hdr.addr2, skb->data + ETH_ALEN, ETH_ALEN); in ieee80211_build_hdr()
2161 memcpy(hdr.addr3, skb->data, ETH_ALEN); in ieee80211_build_hdr()
2162 memcpy(hdr.addr4, skb->data + ETH_ALEN, ETH_ALEN); in ieee80211_build_hdr()
2168 memcpy(hdr.addr2, skb->data + ETH_ALEN, ETH_ALEN); in ieee80211_build_hdr()
2169 memcpy(hdr.addr3, skb->data, ETH_ALEN); in ieee80211_build_hdr()
2181 memcpy(hdr.addr1, skb->data, ETH_ALEN); in ieee80211_build_hdr()
2182 memcpy(hdr.addr2, skb->data + ETH_ALEN, ETH_ALEN); in ieee80211_build_hdr()
2194 memcpy(hdr.addr1, skb->data, ETH_ALEN); in ieee80211_build_hdr()
2195 memcpy(hdr.addr2, skb->data + ETH_ALEN, ETH_ALEN); in ieee80211_build_hdr()
2235 !ether_addr_equal(sdata->vif.addr, skb->data + ETH_ALEN)))) { in ieee80211_build_hdr()
2247 if (unlikely(!multicast && skb->sk && in ieee80211_build_hdr()
2248 skb_shinfo(skb)->tx_flags & SKBTX_WIFI_STATUS)) { in ieee80211_build_hdr()
2249 struct sk_buff *ack_skb = skb_clone_sk(skb); in ieee80211_build_hdr()
2272 if (skb_shared(skb)) { in ieee80211_build_hdr()
2273 struct sk_buff *tmp_skb = skb; in ieee80211_build_hdr()
2278 skb = skb_clone(skb, GFP_ATOMIC); in ieee80211_build_hdr()
2281 if (!skb) { in ieee80211_build_hdr()
2305 nh_pos = skb_network_header(skb) - skb->data; in ieee80211_build_hdr()
2306 h_pos = skb_transport_header(skb) - skb->data; in ieee80211_build_hdr()
2308 skb_pull(skb, skip_header_bytes); in ieee80211_build_hdr()
2312 head_need = hdrlen + encaps_len + meshhdrlen - skb_headroom(skb); in ieee80211_build_hdr()
2326 if (head_need > 0 || skb_cloned(skb)) { in ieee80211_build_hdr()
2330 if (ieee80211_skb_resize(sdata, skb, head_need, true)) { in ieee80211_build_hdr()
2331 ieee80211_free_txskb(&local->hw, skb); in ieee80211_build_hdr()
2332 skb = NULL; in ieee80211_build_hdr()
2338 memcpy(skb_push(skb, encaps_len), encaps_data, encaps_len); in ieee80211_build_hdr()
2345 memcpy(skb_push(skb, meshhdrlen), &mesh_hdr, meshhdrlen); in ieee80211_build_hdr()
2354 qos_control = (__le16 *) skb_push(skb, 2); in ieee80211_build_hdr()
2355 memcpy(skb_push(skb, hdrlen - 2), &hdr, hdrlen - 2); in ieee80211_build_hdr()
2362 memcpy(skb_push(skb, hdrlen), &hdr, hdrlen); in ieee80211_build_hdr()
2370 skb_set_mac_header(skb, 0); in ieee80211_build_hdr()
2371 skb_set_network_header(skb, nh_pos); in ieee80211_build_hdr()
2372 skb_set_transport_header(skb, h_pos); in ieee80211_build_hdr()
2374 info = IEEE80211_SKB_CB(skb); in ieee80211_build_hdr()
2381 return skb; in ieee80211_build_hdr()
2383 kfree_skb(skb); in ieee80211_build_hdr()
2387 void __ieee80211_subif_start_xmit(struct sk_buff *skb, in __ieee80211_subif_start_xmit() argument
2394 if (unlikely(skb->len < ETH_HLEN)) { in __ieee80211_subif_start_xmit()
2395 kfree_skb(skb); in __ieee80211_subif_start_xmit()
2401 if (ieee80211_lookup_ra_sta(sdata, skb, &sta)) { in __ieee80211_subif_start_xmit()
2402 kfree_skb(skb); in __ieee80211_subif_start_xmit()
2406 skb = ieee80211_build_hdr(sdata, skb, info_flags, sta); in __ieee80211_subif_start_xmit()
2407 if (IS_ERR(skb)) in __ieee80211_subif_start_xmit()
2411 dev->stats.tx_bytes += skb->len; in __ieee80211_subif_start_xmit()
2414 ieee80211_xmit(sdata, sta, skb); in __ieee80211_subif_start_xmit()
2426 netdev_tx_t ieee80211_subif_start_xmit(struct sk_buff *skb, in ieee80211_subif_start_xmit() argument
2429 __ieee80211_subif_start_xmit(skb, dev, 0); in ieee80211_subif_start_xmit()
2435 struct sk_buff *skb, u32 info_flags) in ieee80211_build_data_template() argument
2446 if (ieee80211_lookup_ra_sta(sdata, skb, &sta)) { in ieee80211_build_data_template()
2447 kfree_skb(skb); in ieee80211_build_data_template()
2448 skb = ERR_PTR(-EINVAL); in ieee80211_build_data_template()
2452 skb = ieee80211_build_hdr(sdata, skb, info_flags, sta); in ieee80211_build_data_template()
2453 if (IS_ERR(skb)) in ieee80211_build_data_template()
2456 hdr = (void *)skb->data; in ieee80211_build_data_template()
2458 tx.skb = skb; in ieee80211_build_data_template()
2462 kfree_skb(skb); in ieee80211_build_data_template()
2468 return skb; in ieee80211_build_data_template()
2477 struct sk_buff *skb; in ieee80211_clear_tx_pending() local
2481 while ((skb = skb_dequeue(&local->pending[i])) != NULL) in ieee80211_clear_tx_pending()
2482 ieee80211_free_txskb(&local->hw, skb); in ieee80211_clear_tx_pending()
2492 struct sk_buff *skb) in ieee80211_tx_pending_skb() argument
2494 struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb); in ieee80211_tx_pending_skb()
2506 dev_kfree_skb(skb); in ieee80211_tx_pending_skb()
2510 result = ieee80211_tx(sdata, NULL, skb, true); in ieee80211_tx_pending_skb()
2515 __skb_queue_tail(&skbs, skb); in ieee80211_tx_pending_skb()
2517 hdr = (struct ieee80211_hdr *)skb->data; in ieee80211_tx_pending_skb()
2520 result = __ieee80211_tx(local, &skbs, skb->len, sta, true); in ieee80211_tx_pending_skb()
2549 struct sk_buff *skb = __skb_dequeue(&local->pending[i]); in ieee80211_tx_pending() local
2550 struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb); in ieee80211_tx_pending()
2553 ieee80211_free_txskb(&local->hw, skb); in ieee80211_tx_pending()
2560 txok = ieee80211_tx_pending_skb(local, skb); in ieee80211_tx_pending()
2578 struct ps_data *ps, struct sk_buff *skb, in __ieee80211_beacon_add_tim() argument
2599 tim = pos = (u8 *) skb_put(skb, 6); in __ieee80211_beacon_add_tim()
2632 skb_put(skb, n2 - n1); in __ieee80211_beacon_add_tim()
2643 struct ps_data *ps, struct sk_buff *skb, in ieee80211_beacon_add_tim() argument
2656 __ieee80211_beacon_add_tim(sdata, ps, skb, is_template); in ieee80211_beacon_add_tim()
2659 __ieee80211_beacon_add_tim(sdata, ps, skb, is_template); in ieee80211_beacon_add_tim()
2808 struct sk_buff *skb = NULL; in __ieee80211_beacon_get() local
2843 skb = dev_alloc_skb(local->tx_headroom + in __ieee80211_beacon_get()
2847 if (!skb) in __ieee80211_beacon_get()
2850 skb_reserve(skb, local->tx_headroom); in __ieee80211_beacon_get()
2851 memcpy(skb_put(skb, beacon->head_len), beacon->head, in __ieee80211_beacon_get()
2854 ieee80211_beacon_add_tim(sdata, &ap->ps, skb, in __ieee80211_beacon_get()
2859 offs->tim_length = skb->len - beacon->head_len; in __ieee80211_beacon_get()
2862 csa_off_base = skb->len; in __ieee80211_beacon_get()
2866 memcpy(skb_put(skb, beacon->tail_len), in __ieee80211_beacon_get()
2885 skb = dev_alloc_skb(local->tx_headroom + beacon->head_len + in __ieee80211_beacon_get()
2887 if (!skb) in __ieee80211_beacon_get()
2889 skb_reserve(skb, local->tx_headroom); in __ieee80211_beacon_get()
2890 memcpy(skb_put(skb, beacon->head_len), beacon->head, in __ieee80211_beacon_get()
2893 hdr = (struct ieee80211_hdr *) skb->data; in __ieee80211_beacon_get()
2918 skb = dev_alloc_skb(local->tx_headroom + in __ieee80211_beacon_get()
2923 if (!skb) in __ieee80211_beacon_get()
2925 skb_reserve(skb, local->tx_headroom); in __ieee80211_beacon_get()
2926 memcpy(skb_put(skb, beacon->head_len), beacon->head, in __ieee80211_beacon_get()
2928 ieee80211_beacon_add_tim(sdata, &ifmsh->ps, skb, is_template); in __ieee80211_beacon_get()
2932 offs->tim_length = skb->len - beacon->head_len; in __ieee80211_beacon_get()
2935 memcpy(skb_put(skb, beacon->tail_len), beacon->tail, in __ieee80211_beacon_get()
2958 info = IEEE80211_SKB_CB(skb); in __ieee80211_beacon_get()
2968 txrc.skb = skb; in __ieee80211_beacon_get()
2985 return skb; in __ieee80211_beacon_get()
3019 struct sk_buff *skb = NULL; in ieee80211_proberesp_get() local
3034 skb = dev_alloc_skb(presp->len); in ieee80211_proberesp_get()
3035 if (!skb) in ieee80211_proberesp_get()
3038 memcpy(skb_put(skb, presp->len), presp->data, presp->len); in ieee80211_proberesp_get()
3040 hdr = (struct ieee80211_hdr *) skb->data; in ieee80211_proberesp_get()
3045 return skb; in ieee80211_proberesp_get()
3056 struct sk_buff *skb; in ieee80211_pspoll_get() local
3065 skb = dev_alloc_skb(local->hw.extra_tx_headroom + sizeof(*pspoll)); in ieee80211_pspoll_get()
3066 if (!skb) in ieee80211_pspoll_get()
3069 skb_reserve(skb, local->hw.extra_tx_headroom); in ieee80211_pspoll_get()
3071 pspoll = (struct ieee80211_pspoll *) skb_put(skb, sizeof(*pspoll)); in ieee80211_pspoll_get()
3083 return skb; in ieee80211_pspoll_get()
3094 struct sk_buff *skb; in ieee80211_nullfunc_get() local
3103 skb = dev_alloc_skb(local->hw.extra_tx_headroom + sizeof(*nullfunc)); in ieee80211_nullfunc_get()
3104 if (!skb) in ieee80211_nullfunc_get()
3107 skb_reserve(skb, local->hw.extra_tx_headroom); in ieee80211_nullfunc_get()
3109 nullfunc = (struct ieee80211_hdr_3addr *) skb_put(skb, in ieee80211_nullfunc_get()
3119 return skb; in ieee80211_nullfunc_get()
3130 struct sk_buff *skb; in ieee80211_probereq_get() local
3136 skb = dev_alloc_skb(local->hw.extra_tx_headroom + sizeof(*hdr) + in ieee80211_probereq_get()
3138 if (!skb) in ieee80211_probereq_get()
3141 skb_reserve(skb, local->hw.extra_tx_headroom); in ieee80211_probereq_get()
3143 hdr = (struct ieee80211_hdr_3addr *) skb_put(skb, sizeof(*hdr)); in ieee80211_probereq_get()
3151 pos = skb_put(skb, ie_ssid_len); in ieee80211_probereq_get()
3158 return skb; in ieee80211_probereq_get()
3198 struct sk_buff *skb = NULL; in ieee80211_get_buffered_bc() local
3231 skb = skb_dequeue(&ps->bc_buf); in ieee80211_get_buffered_bc()
3232 if (!skb) in ieee80211_get_buffered_bc()
3236 if (!skb_queue_empty(&ps->bc_buf) && skb->len >= 2) { in ieee80211_get_buffered_bc()
3238 (struct ieee80211_hdr *) skb->data; in ieee80211_get_buffered_bc()
3247 sdata = IEEE80211_DEV_TO_SUB_IF(skb->dev); in ieee80211_get_buffered_bc()
3248 if (!ieee80211_tx_prepare(sdata, &tx, NULL, skb)) in ieee80211_get_buffered_bc()
3250 dev_kfree_skb_any(skb); in ieee80211_get_buffered_bc()
3253 info = IEEE80211_SKB_CB(skb); in ieee80211_get_buffered_bc()
3259 skb = NULL; in ieee80211_get_buffered_bc()
3263 return skb; in ieee80211_get_buffered_bc()
3359 struct sk_buff *skb, int tid, in __ieee80211_tx_skb_tid_band() argument
3364 skb_set_mac_header(skb, 0); in __ieee80211_tx_skb_tid_band()
3365 skb_set_network_header(skb, 0); in __ieee80211_tx_skb_tid_band()
3366 skb_set_transport_header(skb, 0); in __ieee80211_tx_skb_tid_band()
3368 skb_set_queue_mapping(skb, ac); in __ieee80211_tx_skb_tid_band()
3369 skb->priority = tid; in __ieee80211_tx_skb_tid_band()
3371 skb->dev = sdata->dev; in __ieee80211_tx_skb_tid_band()
3379 IEEE80211_SKB_CB(skb)->band = band; in __ieee80211_tx_skb_tid_band()
3380 ieee80211_xmit(sdata, NULL, skb); in __ieee80211_tx_skb_tid_band()