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
53 switch (mac_cb(skb)->dest.mode) { in ieee802154_subif_frame()
55 if (mac_cb(skb)->dest.mode != IEEE802154_ADDR_NONE) in ieee802154_subif_frame()
57 skb->pkt_type = PACKET_OTHERHOST; in ieee802154_subif_frame()
60 skb->pkt_type = PACKET_HOST; in ieee802154_subif_frame()
63 if (mac_cb(skb)->dest.pan_id != span && in ieee802154_subif_frame()
64 mac_cb(skb)->dest.pan_id != cpu_to_le16(IEEE802154_PANID_BROADCAST)) in ieee802154_subif_frame()
65 skb->pkt_type = PACKET_OTHERHOST; in ieee802154_subif_frame()
66 else if (mac_cb(skb)->dest.extended_addr == wpan_dev->extended_addr) in ieee802154_subif_frame()
67 skb->pkt_type = PACKET_HOST; in ieee802154_subif_frame()
69 skb->pkt_type = PACKET_OTHERHOST; in ieee802154_subif_frame()
72 if (mac_cb(skb)->dest.pan_id != span && in ieee802154_subif_frame()
73 mac_cb(skb)->dest.pan_id != cpu_to_le16(IEEE802154_PANID_BROADCAST)) in ieee802154_subif_frame()
74 skb->pkt_type = PACKET_OTHERHOST; in ieee802154_subif_frame()
75 else if (mac_cb(skb)->dest.short_addr == sshort) in ieee802154_subif_frame()
76 skb->pkt_type = PACKET_HOST; in ieee802154_subif_frame()
77 else if (mac_cb(skb)->dest.short_addr == in ieee802154_subif_frame()
79 skb->pkt_type = PACKET_BROADCAST; in ieee802154_subif_frame()
81 skb->pkt_type = PACKET_OTHERHOST; in ieee802154_subif_frame()
88 skb->dev = sdata->dev; in ieee802154_subif_frame()
94 rc = mac802154_llsec_decrypt(&sdata->sec, skb); in ieee802154_subif_frame()
101 sdata->dev->stats.rx_bytes += skb->len; in ieee802154_subif_frame()
103 switch (mac_cb(skb)->type) { in ieee802154_subif_frame()
105 return ieee802154_deliver_skb(skb); in ieee802154_subif_frame()
108 mac_cb(skb)->type); in ieee802154_subif_frame()
113 kfree_skb(skb); in ieee802154_subif_frame()
135 ieee802154_parse_frame_start(struct sk_buff *skb, struct ieee802154_hdr *hdr) in ieee802154_parse_frame_start() argument
138 struct ieee802154_mac_cb *cb = mac_cb_init(skb); in ieee802154_parse_frame_start()
140 skb_reset_mac_header(skb); in ieee802154_parse_frame_start()
142 hlen = ieee802154_hdr_pull(skb, hdr); in ieee802154_parse_frame_start()
146 skb->mac_len = hlen; in ieee802154_parse_frame_start()
195 struct sk_buff *skb) in __ieee802154_rx_handle_packet() argument
201 ret = ieee802154_parse_frame_start(skb, &hdr); in __ieee802154_rx_handle_packet()
204 kfree_skb(skb); in __ieee802154_rx_handle_packet()
215 ieee802154_subif_frame(sdata, skb, &hdr); in __ieee802154_rx_handle_packet()
216 skb = NULL; in __ieee802154_rx_handle_packet()
220 if (skb) in __ieee802154_rx_handle_packet()
221 kfree_skb(skb); in __ieee802154_rx_handle_packet()
225 ieee802154_monitors_rx(struct ieee802154_local *local, struct sk_buff *skb) in ieee802154_monitors_rx() argument
230 skb_reset_mac_header(skb); in ieee802154_monitors_rx()
231 skb->ip_summed = CHECKSUM_UNNECESSARY; in ieee802154_monitors_rx()
232 skb->pkt_type = PACKET_OTHERHOST; in ieee802154_monitors_rx()
233 skb->protocol = htons(ETH_P_IEEE802154); in ieee802154_monitors_rx()
242 skb2 = skb_clone(skb, GFP_ATOMIC); in ieee802154_monitors_rx()
248 sdata->dev->stats.rx_bytes += skb->len; in ieee802154_monitors_rx()
253 void ieee802154_rx(struct ieee802154_local *local, struct sk_buff *skb) in ieee802154_rx() argument
267 crc = crc_ccitt(0, skb->data, skb->len); in ieee802154_rx()
268 put_unaligned_le16(crc, skb_put(skb, 2)); in ieee802154_rx()
273 ieee802154_monitors_rx(local, skb); in ieee802154_rx()
279 crc = crc_ccitt(0, skb->data, skb->len); in ieee802154_rx()
286 skb_trim(skb, skb->len - 2); in ieee802154_rx()
288 __ieee802154_rx_handle_packet(local, skb); in ieee802154_rx()
294 kfree_skb(skb); in ieee802154_rx()
298 ieee802154_rx_irqsafe(struct ieee802154_hw *hw, struct sk_buff *skb, u8 lqi) in ieee802154_rx_irqsafe() argument
302 mac_cb(skb)->lqi = lqi; in ieee802154_rx_irqsafe()
303 skb->pkt_type = IEEE802154_RX_MSG; in ieee802154_rx_irqsafe()
304 skb_queue_tail(&local->skb_queue, skb); in ieee802154_rx_irqsafe()