Lines Matching refs:skb
42 struct sk_buff *skb, in remove_monitor_info() argument
46 if (likely(skb->len > FCS_LEN)) in remove_monitor_info()
47 __pskb_trim(skb, skb->len - FCS_LEN); in remove_monitor_info()
51 dev_kfree_skb(skb); in remove_monitor_info()
56 __pskb_pull(skb, rtap_vendor_space); in remove_monitor_info()
58 return skb; in remove_monitor_info()
61 static inline bool should_drop_frame(struct sk_buff *skb, int present_fcs_len, in should_drop_frame() argument
64 struct ieee80211_rx_status *status = IEEE80211_SKB_RXCB(skb); in should_drop_frame()
67 hdr = (void *)(skb->data + rtap_vendor_space); in should_drop_frame()
74 if (unlikely(skb->len < 16 + present_fcs_len + rtap_vendor_space)) in should_drop_frame()
88 struct sk_buff *skb) in ieee80211_rx_radiotap_hdrlen() argument
132 struct ieee80211_vendor_radiotap *rtap = (void *)skb->data; in ieee80211_rx_radiotap_hdrlen()
156 struct sk_buff *skb, in ieee80211_add_rx_radiotap_header() argument
160 struct ieee80211_rx_status *status = IEEE80211_SKB_RXCB(skb); in ieee80211_add_rx_radiotap_header()
172 rtap = *(struct ieee80211_vendor_radiotap *)skb->data; in ieee80211_add_rx_radiotap_header()
174 skb_pull(skb, sizeof(rtap) + rtap.len + rtap.pad); in ieee80211_add_rx_radiotap_header()
177 mpdulen = skb->len; in ieee80211_add_rx_radiotap_header()
181 rthdr = (struct ieee80211_radiotap_header *)skb_push(skb, rtap_len); in ieee80211_add_rx_radiotap_header()
431 struct sk_buff *skb, *skb2; in ieee80211_rx_monitor() local
476 skb = origskb; in ieee80211_rx_monitor()
486 if (skb_headroom(skb) < needed_headroom && in ieee80211_rx_monitor()
487 pskb_expand_head(skb, needed_headroom, 0, GFP_ATOMIC)) { in ieee80211_rx_monitor()
488 dev_kfree_skb(skb); in ieee80211_rx_monitor()
496 skb = skb_copy_expand(origskb, needed_headroom, 0, GFP_ATOMIC); in ieee80211_rx_monitor()
501 if (!skb) in ieee80211_rx_monitor()
506 ieee80211_add_rx_radiotap_header(local, skb, rate, rt_hdrlen, true); in ieee80211_rx_monitor()
508 skb_reset_mac_header(skb); in ieee80211_rx_monitor()
509 skb->ip_summed = CHECKSUM_UNNECESSARY; in ieee80211_rx_monitor()
510 skb->pkt_type = PACKET_OTHERHOST; in ieee80211_rx_monitor()
511 skb->protocol = htons(ETH_P_802_2); in ieee80211_rx_monitor()
524 skb2 = skb_clone(skb, GFP_ATOMIC); in ieee80211_rx_monitor()
533 sdata->dev->stats.rx_bytes += skb->len; in ieee80211_rx_monitor()
537 skb->dev = prev_dev; in ieee80211_rx_monitor()
538 netif_receive_skb(skb); in ieee80211_rx_monitor()
540 dev_kfree_skb(skb); in ieee80211_rx_monitor()
547 struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)rx->skb->data; in ieee80211_parse_qos()
548 struct ieee80211_rx_status *status = IEEE80211_SKB_RXCB(rx->skb); in ieee80211_parse_qos()
584 rx->skb->priority = (tid > 7) ? 0 : tid; in ieee80211_parse_qos()
615 WARN_ONCE((unsigned long)rx->skb->data & 1, in ieee80211_verify_alignment()
616 "unaligned packet at 0x%p\n", rx->skb->data); in ieee80211_verify_alignment()
623 static int ieee80211_is_unicast_robust_mgmt_frame(struct sk_buff *skb) in ieee80211_is_unicast_robust_mgmt_frame() argument
625 struct ieee80211_hdr *hdr = (struct ieee80211_hdr *) skb->data; in ieee80211_is_unicast_robust_mgmt_frame()
630 return ieee80211_is_robust_mgmt_frame(skb); in ieee80211_is_unicast_robust_mgmt_frame()
634 static int ieee80211_is_multicast_robust_mgmt_frame(struct sk_buff *skb) in ieee80211_is_multicast_robust_mgmt_frame() argument
636 struct ieee80211_hdr *hdr = (struct ieee80211_hdr *) skb->data; in ieee80211_is_multicast_robust_mgmt_frame()
641 return ieee80211_is_robust_mgmt_frame(skb); in ieee80211_is_multicast_robust_mgmt_frame()
646 static int ieee80211_get_mmie_keyidx(struct sk_buff *skb) in ieee80211_get_mmie_keyidx() argument
648 struct ieee80211_mgmt *hdr = (struct ieee80211_mgmt *) skb->data; in ieee80211_get_mmie_keyidx()
652 if (skb->len < 24 + sizeof(*mmie) || !is_multicast_ether_addr(hdr->da)) in ieee80211_get_mmie_keyidx()
655 if (!ieee80211_is_robust_mgmt_frame(skb)) in ieee80211_get_mmie_keyidx()
659 (skb->data + skb->len - sizeof(*mmie)); in ieee80211_get_mmie_keyidx()
665 (skb->data + skb->len - sizeof(*mmie16)); in ieee80211_get_mmie_keyidx()
666 if (skb->len >= 24 + sizeof(*mmie16) && in ieee80211_get_mmie_keyidx()
675 struct sk_buff *skb) in iwl80211_get_cs_keyid() argument
677 struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data; in iwl80211_get_cs_keyid()
685 if (skb->len < hdrlen + cs->hdr_len) in iwl80211_get_cs_keyid()
688 skb_copy_bits(skb, hdrlen + cs->key_idx_off, &keyid, 1); in iwl80211_get_cs_keyid()
697 struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)rx->skb->data; in ieee80211_rx_mesh_check()
729 if (rx->skb->len < IEEE80211_MIN_ACTION_SIZE) in ieee80211_rx_mesh_check()
758 struct sk_buff *skb; in ieee80211_release_reorder_frame() local
773 while ((skb = __skb_dequeue(skb_list))) { in ieee80211_release_reorder_frame()
774 status = IEEE80211_SKB_RXCB(skb); in ieee80211_release_reorder_frame()
776 __skb_queue_tail(frames, skb); in ieee80211_release_reorder_frame()
892 struct sk_buff *skb, in ieee80211_sta_manage_reorder_buf() argument
895 struct ieee80211_hdr *hdr = (struct ieee80211_hdr *) skb->data; in ieee80211_sta_manage_reorder_buf()
896 struct ieee80211_rx_status *status = IEEE80211_SKB_RXCB(skb); in ieee80211_sta_manage_reorder_buf()
920 dev_kfree_skb(skb); in ieee80211_sta_manage_reorder_buf()
942 dev_kfree_skb(skb); in ieee80211_sta_manage_reorder_buf()
962 __skb_queue_tail(&tid_agg_rx->reorder_buf[index], skb); in ieee80211_sta_manage_reorder_buf()
981 struct sk_buff *skb = rx->skb; in ieee80211_rx_reorder_ampdu() local
983 struct ieee80211_hdr *hdr = (struct ieee80211_hdr *) skb->data; in ieee80211_rx_reorder_ampdu()
984 struct ieee80211_rx_status *status = IEEE80211_SKB_RXCB(skb); in ieee80211_rx_reorder_ampdu()
1032 skb->pkt_type = IEEE80211_SDATA_QUEUE_TYPE_FRAME; in ieee80211_rx_reorder_ampdu()
1033 skb_queue_tail(&rx->sdata->skb_queue, skb); in ieee80211_rx_reorder_ampdu()
1045 if (ieee80211_sta_manage_reorder_buf(rx->sdata, tid_agg_rx, skb, in ieee80211_rx_reorder_ampdu()
1050 __skb_queue_tail(frames, skb); in ieee80211_rx_reorder_ampdu()
1056 struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)rx->skb->data; in ieee80211_rx_h_check_dup()
1057 struct ieee80211_rx_status *status = IEEE80211_SKB_RXCB(rx->skb); in ieee80211_rx_h_check_dup()
1064 if (rx->skb->len < 24) in ieee80211_rx_h_check_dup()
1092 struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)rx->skb->data; in ieee80211_rx_h_check()
1094 if (unlikely(rx->skb->len < 16)) { in ieee80211_rx_h_check()
1129 if (rx->skb->len < hdrlen + 8) in ieee80211_rx_h_check()
1132 skb_copy_bits(rx->skb, hdrlen + 6, ðertype, 2); in ieee80211_rx_h_check()
1155 struct sk_buff *skb; in ieee80211_rx_h_check_more_data() local
1158 skb = rx->skb; in ieee80211_rx_h_check_more_data()
1159 hdr = (struct ieee80211_hdr *) skb->data; in ieee80211_rx_h_check_more_data()
1264 struct ieee80211_hdr *hdr = (void *)rx->skb->data; in ieee80211_rx_h_uapsd_and_pspoll()
1265 struct ieee80211_rx_status *status = IEEE80211_SKB_RXCB(rx->skb); in ieee80211_rx_h_uapsd_and_pspoll()
1301 dev_kfree_skb(rx->skb); in ieee80211_rx_h_uapsd_and_pspoll()
1339 struct sk_buff *skb = rx->skb; in ieee80211_rx_h_sta_process() local
1340 struct ieee80211_rx_status *status = IEEE80211_SKB_RXCB(skb); in ieee80211_rx_h_sta_process()
1341 struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data; in ieee80211_rx_h_sta_process()
1356 u8 *bssid = ieee80211_get_bssid(hdr, rx->skb->len, in ieee80211_rx_h_sta_process()
1370 u8 *bssid = ieee80211_get_bssid(hdr, rx->skb->len, in ieee80211_rx_h_sta_process()
1396 sta->rx_bytes += rx->skb->len; in ieee80211_rx_h_sta_process()
1472 dev_kfree_skb(rx->skb); in ieee80211_rx_h_sta_process()
1482 struct sk_buff *skb = rx->skb; in ieee80211_rx_h_decrypt() local
1483 struct ieee80211_rx_status *status = IEEE80211_SKB_RXCB(skb); in ieee80211_rx_h_decrypt()
1484 struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data; in ieee80211_rx_h_decrypt()
1536 keyid = iwl80211_get_cs_keyid(cs, rx->skb); in ieee80211_rx_h_decrypt()
1544 mmie_keyidx = ieee80211_get_mmie_keyidx(rx->skb); in ieee80211_rx_h_decrypt()
1620 keyidx = iwl80211_get_cs_keyid(cs, rx->skb); in ieee80211_rx_h_decrypt()
1625 if (rx->skb->len < 8 + hdrlen) in ieee80211_rx_h_decrypt()
1631 skb_copy_bits(rx->skb, hdrlen + 3, &keyid, 1); in ieee80211_rx_h_decrypt()
1711 struct sk_buff **skb) in ieee80211_reassemble_add() argument
1722 __skb_queue_tail(&entry->skb_list, *skb); /* no need for locking */ in ieee80211_reassemble_add()
1723 *skb = NULL; in ieee80211_reassemble_add()
1785 struct sk_buff *skb; in ieee80211_rx_h_defragment() local
1788 hdr = (struct ieee80211_hdr *)rx->skb->data; in ieee80211_rx_h_defragment()
1807 if (skb_linearize(rx->skb)) in ieee80211_rx_h_defragment()
1815 hdr = (struct ieee80211_hdr *)rx->skb->data; in ieee80211_rx_h_defragment()
1821 rx->seqno_idx, &(rx->skb)); in ieee80211_rx_h_defragment()
1888 skb_pull(rx->skb, ieee80211_hdrlen(fc)); in ieee80211_rx_h_defragment()
1889 __skb_queue_tail(&entry->skb_list, rx->skb); in ieee80211_rx_h_defragment()
1891 entry->extra_len += rx->skb->len; in ieee80211_rx_h_defragment()
1893 rx->skb = NULL; in ieee80211_rx_h_defragment()
1897 rx->skb = __skb_dequeue(&entry->skb_list); in ieee80211_rx_h_defragment()
1898 if (skb_tailroom(rx->skb) < entry->extra_len) { in ieee80211_rx_h_defragment()
1900 if (unlikely(pskb_expand_head(rx->skb, 0, entry->extra_len, in ieee80211_rx_h_defragment()
1907 while ((skb = __skb_dequeue(&entry->skb_list))) { in ieee80211_rx_h_defragment()
1908 memcpy(skb_put(rx->skb, skb->len), skb->data, skb->len); in ieee80211_rx_h_defragment()
1909 dev_kfree_skb(skb); in ieee80211_rx_h_defragment()
1913 status = IEEE80211_SKB_RXCB(rx->skb); in ieee80211_rx_h_defragment()
1934 struct sk_buff *skb = rx->skb; in ieee80211_drop_unencrypted() local
1935 struct ieee80211_rx_status *status = IEEE80211_SKB_RXCB(skb); in ieee80211_drop_unencrypted()
1955 struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)rx->skb->data; in ieee80211_drop_unencrypted_mgmt()
1956 struct ieee80211_rx_status *status = IEEE80211_SKB_RXCB(rx->skb); in ieee80211_drop_unencrypted_mgmt()
1968 ieee80211_is_unicast_robust_mgmt_frame(rx->skb) && in ieee80211_drop_unencrypted_mgmt()
1973 rx->skb->data, in ieee80211_drop_unencrypted_mgmt()
1974 rx->skb->len); in ieee80211_drop_unencrypted_mgmt()
1978 if (unlikely(ieee80211_is_multicast_robust_mgmt_frame(rx->skb) && in ieee80211_drop_unencrypted_mgmt()
1979 ieee80211_get_mmie_keyidx(rx->skb) < 0)) { in ieee80211_drop_unencrypted_mgmt()
1983 rx->skb->data, in ieee80211_drop_unencrypted_mgmt()
1984 rx->skb->len); in ieee80211_drop_unencrypted_mgmt()
1992 ieee80211_is_robust_mgmt_frame(rx->skb))) in ieee80211_drop_unencrypted_mgmt()
2003 struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)rx->skb->data; in __ieee80211_data_to_8023()
2026 ret = ieee80211_data_to_8023(rx->skb, sdata->vif.addr, sdata->vif.type); in __ieee80211_data_to_8023()
2030 ehdr = (struct ethhdr *) rx->skb->data; in __ieee80211_data_to_8023()
2046 struct ethhdr *ehdr = (struct ethhdr *) rx->skb->data; in ieee80211_frame_allowed()
2072 struct sk_buff *skb, *xmit_skb; in ieee80211_deliver_skb() local
2073 struct ethhdr *ehdr = (struct ethhdr *) rx->skb->data; in ieee80211_deliver_skb()
2075 struct ieee80211_rx_status *status = IEEE80211_SKB_RXCB(rx->skb); in ieee80211_deliver_skb()
2078 dev->stats.rx_bytes += rx->skb->len; in ieee80211_deliver_skb()
2080 skb = rx->skb; in ieee80211_deliver_skb()
2093 xmit_skb = skb_copy(skb, GFP_ATOMIC); in ieee80211_deliver_skb()
2098 dsta = sta_info_get(sdata, skb->data); in ieee80211_deliver_skb()
2106 xmit_skb = skb; in ieee80211_deliver_skb()
2107 skb = NULL; in ieee80211_deliver_skb()
2113 if (skb) { in ieee80211_deliver_skb()
2122 align = (unsigned long)(skb->data + sizeof(struct ethhdr)) & 3; in ieee80211_deliver_skb()
2124 if (WARN_ON(skb_headroom(skb) < 3)) { in ieee80211_deliver_skb()
2125 dev_kfree_skb(skb); in ieee80211_deliver_skb()
2126 skb = NULL; in ieee80211_deliver_skb()
2128 u8 *data = skb->data; in ieee80211_deliver_skb()
2129 size_t len = skb_headlen(skb); in ieee80211_deliver_skb()
2130 skb->data -= align; in ieee80211_deliver_skb()
2131 memmove(skb->data, data, len); in ieee80211_deliver_skb()
2132 skb_set_tail_pointer(skb, len); in ieee80211_deliver_skb()
2138 if (skb) { in ieee80211_deliver_skb()
2140 skb->protocol = eth_type_trans(skb, dev); in ieee80211_deliver_skb()
2141 memset(skb->cb, 0, sizeof(skb->cb)); in ieee80211_deliver_skb()
2144 napi_gro_receive(rx->local->napi, skb); in ieee80211_deliver_skb()
2146 netif_receive_skb(skb); in ieee80211_deliver_skb()
2167 struct sk_buff *skb = rx->skb; in ieee80211_rx_h_amsdu() local
2168 struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data; in ieee80211_rx_h_amsdu()
2171 struct ieee80211_rx_status *status = IEEE80211_SKB_RXCB(rx->skb); in ieee80211_rx_h_amsdu()
2194 skb->dev = dev; in ieee80211_rx_h_amsdu()
2197 if (skb_linearize(skb)) in ieee80211_rx_h_amsdu()
2200 ieee80211_amsdu_to_8023s(skb, &frame_list, dev->dev_addr, in ieee80211_rx_h_amsdu()
2205 rx->skb = __skb_dequeue(&frame_list); in ieee80211_rx_h_amsdu()
2208 dev_kfree_skb(rx->skb); in ieee80211_rx_h_amsdu()
2225 struct sk_buff *skb = rx->skb, *fwd_skb; in ieee80211_rx_h_mesh_fwding() local
2228 struct ieee80211_rx_status *status = IEEE80211_SKB_RXCB(skb); in ieee80211_rx_h_mesh_fwding()
2232 hdr = (struct ieee80211_hdr *) skb->data; in ieee80211_rx_h_mesh_fwding()
2236 if (!pskb_may_pull(rx->skb, hdrlen + 6)) in ieee80211_rx_h_mesh_fwding()
2239 mesh_hdr = (struct ieee80211s_hdr *) (skb->data + hdrlen); in ieee80211_rx_h_mesh_fwding()
2242 if (!pskb_may_pull(rx->skb, in ieee80211_rx_h_mesh_fwding()
2247 hdr = (struct ieee80211_hdr *) skb->data; in ieee80211_rx_h_mesh_fwding()
2248 mesh_hdr = (struct ieee80211s_hdr *) (skb->data + hdrlen); in ieee80211_rx_h_mesh_fwding()
2300 q = ieee80211_select_queue_80211(sdata, skb, hdr); in ieee80211_rx_h_mesh_fwding()
2305 skb_set_queue_mapping(skb, q); in ieee80211_rx_h_mesh_fwding()
2315 fwd_skb = skb_copy(skb, GFP_ATOMIC); in ieee80211_rx_h_mesh_fwding()
2365 struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)rx->skb->data; in ieee80211_rx_h_data()
2406 if (unlikely(((struct ethhdr *)rx->skb->data)->h_proto == in ieee80211_rx_h_data()
2408 struct ieee80211_tdls_data *tf = (void *)rx->skb->data; in ieee80211_rx_h_data()
2410 if (pskb_may_pull(rx->skb, in ieee80211_rx_h_data()
2416 rx->skb->pkt_type = IEEE80211_SDATA_QUEUE_TDLS_CHSW; in ieee80211_rx_h_data()
2417 skb_queue_tail(&sdata->skb_queue, rx->skb); in ieee80211_rx_h_data()
2434 rx->skb->dev = dev; in ieee80211_rx_h_data()
2438 ((struct ethhdr *)rx->skb->data)->h_dest) && in ieee80211_rx_h_data()
2453 struct sk_buff *skb = rx->skb; in ieee80211_rx_h_ctrl() local
2454 struct ieee80211_bar *bar = (struct ieee80211_bar *)skb->data; in ieee80211_rx_h_ctrl()
2470 if (skb_copy_bits(skb, offsetof(struct ieee80211_bar, control), in ieee80211_rx_h_ctrl()
2493 kfree_skb(skb); in ieee80211_rx_h_ctrl()
2510 struct sk_buff *skb; in ieee80211_process_sa_query_req() local
2529 skb = dev_alloc_skb(sizeof(*resp) + local->hw.extra_tx_headroom); in ieee80211_process_sa_query_req()
2530 if (skb == NULL) in ieee80211_process_sa_query_req()
2533 skb_reserve(skb, local->hw.extra_tx_headroom); in ieee80211_process_sa_query_req()
2534 resp = (struct ieee80211_mgmt *) skb_put(skb, 24); in ieee80211_process_sa_query_req()
2541 skb_put(skb, 1 + sizeof(resp->u.action.u.sa_query)); in ieee80211_process_sa_query_req()
2548 ieee80211_tx_skb(sdata, skb); in ieee80211_process_sa_query_req()
2554 struct ieee80211_mgmt *mgmt = (struct ieee80211_mgmt *) rx->skb->data; in ieee80211_rx_h_mgmt_check()
2555 struct ieee80211_rx_status *status = IEEE80211_SKB_RXCB(rx->skb); in ieee80211_rx_h_mgmt_check()
2562 if (rx->skb->len < 24) in ieee80211_rx_h_mgmt_check()
2577 rx->skb->data, rx->skb->len, in ieee80211_rx_h_mgmt_check()
2596 struct ieee80211_mgmt *mgmt = (struct ieee80211_mgmt *) rx->skb->data; in ieee80211_rx_h_action()
2597 struct ieee80211_rx_status *status = IEEE80211_SKB_RXCB(rx->skb); in ieee80211_rx_h_action()
2598 int len = rx->skb->len; in ieee80211_rx_h_action()
2881 dev_kfree_skb(rx->skb); in ieee80211_rx_h_action()
2885 rx->skb->pkt_type = IEEE80211_SDATA_QUEUE_TYPE_FRAME; in ieee80211_rx_h_action()
2886 skb_queue_tail(&sdata->skb_queue, rx->skb); in ieee80211_rx_h_action()
2896 struct ieee80211_rx_status *status = IEEE80211_SKB_RXCB(rx->skb); in ieee80211_rx_h_userspace_mgmt()
2914 rx->skb->data, rx->skb->len, 0)) { in ieee80211_rx_h_userspace_mgmt()
2917 dev_kfree_skb(rx->skb); in ieee80211_rx_h_userspace_mgmt()
2928 struct ieee80211_mgmt *mgmt = (struct ieee80211_mgmt *) rx->skb->data; in ieee80211_rx_h_action_return()
2931 struct ieee80211_rx_status *status = IEEE80211_SKB_RXCB(rx->skb); in ieee80211_rx_h_action_return()
2958 nskb = skb_copy_expand(rx->skb, local->hw.extra_tx_headroom, 0, in ieee80211_rx_h_action_return()
2983 dev_kfree_skb(rx->skb); in ieee80211_rx_h_action_return()
2991 struct ieee80211_mgmt *mgmt = (void *)rx->skb->data; in ieee80211_rx_h_mgmt()
3031 rx->skb->pkt_type = IEEE80211_SDATA_QUEUE_TYPE_FRAME; in ieee80211_rx_h_mgmt()
3032 skb_queue_tail(&sdata->skb_queue, rx->skb); in ieee80211_rx_h_mgmt()
3046 struct sk_buff *skb = rx->skb, *skb2; in ieee80211_rx_cooked_monitor() local
3048 struct ieee80211_rx_status *status = IEEE80211_SKB_RXCB(skb); in ieee80211_rx_cooked_monitor()
3066 needed_headroom = ieee80211_rx_radiotap_hdrlen(local, status, skb); in ieee80211_rx_cooked_monitor()
3068 if (skb_headroom(skb) < needed_headroom && in ieee80211_rx_cooked_monitor()
3069 pskb_expand_head(skb, needed_headroom, 0, GFP_ATOMIC)) in ieee80211_rx_cooked_monitor()
3073 ieee80211_add_rx_radiotap_header(local, skb, rate, needed_headroom, in ieee80211_rx_cooked_monitor()
3076 skb_set_mac_header(skb, 0); in ieee80211_rx_cooked_monitor()
3077 skb->ip_summed = CHECKSUM_UNNECESSARY; in ieee80211_rx_cooked_monitor()
3078 skb->pkt_type = PACKET_OTHERHOST; in ieee80211_rx_cooked_monitor()
3079 skb->protocol = htons(ETH_P_802_2); in ieee80211_rx_cooked_monitor()
3090 skb2 = skb_clone(skb, GFP_ATOMIC); in ieee80211_rx_cooked_monitor()
3099 sdata->dev->stats.rx_bytes += skb->len; in ieee80211_rx_cooked_monitor()
3103 skb->dev = prev_dev; in ieee80211_rx_cooked_monitor()
3104 netif_receive_skb(skb); in ieee80211_rx_cooked_monitor()
3109 dev_kfree_skb(skb); in ieee80211_rx_cooked_monitor()
3126 status = IEEE80211_SKB_RXCB((rx->skb)); in ieee80211_rx_handlers_result()
3140 dev_kfree_skb(rx->skb); in ieee80211_rx_handlers_result()
3152 struct sk_buff *skb; in ieee80211_rx_handlers() local
3169 while ((skb = __skb_dequeue(frames))) { in ieee80211_rx_handlers()
3175 rx->skb = skb; in ieee80211_rx_handlers()
3276 struct sk_buff *skb = rx->skb; in prepare_for_handlers() local
3277 struct ieee80211_rx_status *status = IEEE80211_SKB_RXCB(skb); in prepare_for_handlers()
3278 u8 *bssid = ieee80211_get_bssid(hdr, skb->len, sdata->vif.type); in prepare_for_handlers()
3369 if (ieee80211_is_public_action(hdr, skb->len)) in prepare_for_handlers()
3392 if (!ieee80211_is_public_action(hdr, skb->len) && in prepare_for_handlers()
3417 struct sk_buff *skb, bool consume) in ieee80211_prepare_and_rx_handle() argument
3421 struct ieee80211_rx_status *status = IEEE80211_SKB_RXCB(skb); in ieee80211_prepare_and_rx_handle()
3422 struct ieee80211_hdr *hdr = (void *)skb->data; in ieee80211_prepare_and_rx_handle()
3424 rx->skb = skb; in ieee80211_prepare_and_rx_handle()
3431 skb = skb_copy(skb, GFP_ATOMIC); in ieee80211_prepare_and_rx_handle()
3432 if (!skb) { in ieee80211_prepare_and_rx_handle()
3440 rx->skb = skb; in ieee80211_prepare_and_rx_handle()
3452 struct sk_buff *skb) in __ieee80211_rx_handle_packet() argument
3464 fc = ((struct ieee80211_hdr *)skb->data)->frame_control; in __ieee80211_rx_handle_packet()
3466 rx.skb = skb; in __ieee80211_rx_handle_packet()
3474 if (skb->len < ieee80211_hdrlen(fc)) in __ieee80211_rx_handle_packet()
3477 err = skb_linearize(skb); in __ieee80211_rx_handle_packet()
3479 err = !pskb_may_pull(skb, ieee80211_hdrlen(fc)); in __ieee80211_rx_handle_packet()
3483 dev_kfree_skb(skb); in __ieee80211_rx_handle_packet()
3487 hdr = (struct ieee80211_hdr *)skb->data; in __ieee80211_rx_handle_packet()
3493 ieee80211_scan_rx(local, skb); in __ieee80211_rx_handle_packet()
3510 ieee80211_prepare_and_rx_handle(&rx, skb, false); in __ieee80211_rx_handle_packet()
3519 if (ieee80211_prepare_and_rx_handle(&rx, skb, true)) in __ieee80211_rx_handle_packet()
3548 ieee80211_prepare_and_rx_handle(&rx, skb, false); in __ieee80211_rx_handle_packet()
3557 if (ieee80211_prepare_and_rx_handle(&rx, skb, true)) in __ieee80211_rx_handle_packet()
3562 dev_kfree_skb(skb); in __ieee80211_rx_handle_packet()
3569 void ieee80211_rx(struct ieee80211_hw *hw, struct sk_buff *skb) in ieee80211_rx() argument
3574 struct ieee80211_rx_status *status = IEEE80211_SKB_RXCB(skb); in ieee80211_rx()
3659 skb = ieee80211_rx_monitor(local, skb, rate); in ieee80211_rx()
3660 if (!skb) { in ieee80211_rx()
3666 ((struct ieee80211_hdr *)skb->data)->frame_control, in ieee80211_rx()
3667 skb->len); in ieee80211_rx()
3668 __ieee80211_rx_handle_packet(hw, skb); in ieee80211_rx()
3674 kfree_skb(skb); in ieee80211_rx()
3680 void ieee80211_rx_irqsafe(struct ieee80211_hw *hw, struct sk_buff *skb) in ieee80211_rx_irqsafe() argument
3684 BUILD_BUG_ON(sizeof(struct ieee80211_rx_status) > sizeof(skb->cb)); in ieee80211_rx_irqsafe()
3686 skb->pkt_type = IEEE80211_RX_MSG; in ieee80211_rx_irqsafe()
3687 skb_queue_tail(&local->skb_queue, skb); in ieee80211_rx_irqsafe()