Lines Matching refs:skb
32 static int ieee802154_deliver_skb(struct sk_buff *skb) in ieee802154_deliver_skb() argument
34 skb->ip_summed = CHECKSUM_UNNECESSARY; in ieee802154_deliver_skb()
35 skb->protocol = htons(ETH_P_IEEE802154); in ieee802154_deliver_skb()
37 return netif_receive_skb(skb); in ieee802154_deliver_skb()
42 struct sk_buff *skb, const struct ieee802154_hdr *hdr) in ieee802154_subif_frame() argument
55 switch (mac_cb(skb)->dest.mode) { in ieee802154_subif_frame()
57 if (mac_cb(skb)->dest.mode != IEEE802154_ADDR_NONE) in ieee802154_subif_frame()
59 skb->pkt_type = PACKET_OTHERHOST; in ieee802154_subif_frame()
62 skb->pkt_type = PACKET_HOST; in ieee802154_subif_frame()
65 if (mac_cb(skb)->dest.pan_id != span && in ieee802154_subif_frame()
66 mac_cb(skb)->dest.pan_id != cpu_to_le16(IEEE802154_PANID_BROADCAST)) in ieee802154_subif_frame()
67 skb->pkt_type = PACKET_OTHERHOST; in ieee802154_subif_frame()
68 else if (mac_cb(skb)->dest.extended_addr == wpan_dev->extended_addr) in ieee802154_subif_frame()
69 skb->pkt_type = PACKET_HOST; in ieee802154_subif_frame()
71 skb->pkt_type = PACKET_OTHERHOST; in ieee802154_subif_frame()
74 if (mac_cb(skb)->dest.pan_id != span && in ieee802154_subif_frame()
75 mac_cb(skb)->dest.pan_id != cpu_to_le16(IEEE802154_PANID_BROADCAST)) in ieee802154_subif_frame()
76 skb->pkt_type = PACKET_OTHERHOST; in ieee802154_subif_frame()
77 else if (mac_cb(skb)->dest.short_addr == sshort) in ieee802154_subif_frame()
78 skb->pkt_type = PACKET_HOST; in ieee802154_subif_frame()
79 else if (mac_cb(skb)->dest.short_addr == in ieee802154_subif_frame()
81 skb->pkt_type = PACKET_BROADCAST; in ieee802154_subif_frame()
83 skb->pkt_type = PACKET_OTHERHOST; in ieee802154_subif_frame()
93 skb->dev = sdata->dev; in ieee802154_subif_frame()
95 rc = mac802154_llsec_decrypt(&sdata->sec, skb); in ieee802154_subif_frame()
102 sdata->dev->stats.rx_bytes += skb->len; in ieee802154_subif_frame()
104 switch (mac_cb(skb)->type) { in ieee802154_subif_frame()
106 return ieee802154_deliver_skb(skb); in ieee802154_subif_frame()
109 mac_cb(skb)->type); in ieee802154_subif_frame()
114 kfree_skb(skb); in ieee802154_subif_frame()
136 ieee802154_parse_frame_start(struct sk_buff *skb, struct ieee802154_hdr *hdr) in ieee802154_parse_frame_start() argument
139 struct ieee802154_mac_cb *cb = mac_cb_init(skb); in ieee802154_parse_frame_start()
141 skb_reset_mac_header(skb); in ieee802154_parse_frame_start()
143 hlen = ieee802154_hdr_pull(skb, hdr); in ieee802154_parse_frame_start()
147 skb->mac_len = hlen; in ieee802154_parse_frame_start()
196 struct sk_buff *skb) in __ieee802154_rx_handle_packet() argument
202 ret = ieee802154_parse_frame_start(skb, &hdr); in __ieee802154_rx_handle_packet()
205 kfree_skb(skb); in __ieee802154_rx_handle_packet()
214 ieee802154_subif_frame(sdata, skb, &hdr); in __ieee802154_rx_handle_packet()
215 skb = NULL; in __ieee802154_rx_handle_packet()
219 if (skb) in __ieee802154_rx_handle_packet()
220 kfree_skb(skb); in __ieee802154_rx_handle_packet()
224 ieee802154_monitors_rx(struct ieee802154_local *local, struct sk_buff *skb) in ieee802154_monitors_rx() argument
229 skb_reset_mac_header(skb); in ieee802154_monitors_rx()
230 skb->ip_summed = CHECKSUM_UNNECESSARY; in ieee802154_monitors_rx()
231 skb->pkt_type = PACKET_OTHERHOST; in ieee802154_monitors_rx()
232 skb->protocol = htons(ETH_P_IEEE802154); in ieee802154_monitors_rx()
241 skb2 = skb_clone(skb, GFP_ATOMIC); in ieee802154_monitors_rx()
247 sdata->dev->stats.rx_bytes += skb->len; in ieee802154_monitors_rx()
252 void ieee802154_rx(struct ieee802154_hw *hw, struct sk_buff *skb) in ieee802154_rx() argument
264 crc = crc_ccitt(0, skb->data, skb->len); in ieee802154_rx()
265 put_unaligned_le16(crc, skb_put(skb, 2)); in ieee802154_rx()
270 ieee802154_monitors_rx(local, skb); in ieee802154_rx()
276 crc = crc_ccitt(0, skb->data, skb->len); in ieee802154_rx()
279 kfree_skb(skb); in ieee802154_rx()
284 skb_trim(skb, skb->len - 2); in ieee802154_rx()
286 __ieee802154_rx_handle_packet(local, skb); in ieee802154_rx()
293 ieee802154_rx_irqsafe(struct ieee802154_hw *hw, struct sk_buff *skb, u8 lqi) in ieee802154_rx_irqsafe() argument
297 mac_cb(skb)->lqi = lqi; in ieee802154_rx_irqsafe()
298 skb->pkt_type = IEEE802154_RX_MSG; in ieee802154_rx_irqsafe()
299 skb_queue_tail(&local->skb_queue, skb); in ieee802154_rx_irqsafe()