Lines Matching refs:skb

21 static int lowpan_give_skb_to_device(struct sk_buff *skb)  in lowpan_give_skb_to_device()  argument
23 skb->protocol = htons(ETH_P_IPV6); in lowpan_give_skb_to_device()
24 skb->dev->stats.rx_packets++; in lowpan_give_skb_to_device()
25 skb->dev->stats.rx_bytes += skb->len; in lowpan_give_skb_to_device()
27 return netif_rx(skb); in lowpan_give_skb_to_device()
30 static int lowpan_rx_handlers_result(struct sk_buff *skb, lowpan_rx_result res) in lowpan_rx_handlers_result() argument
40 kfree_skb(skb); in lowpan_rx_handlers_result()
46 return lowpan_give_skb_to_device(skb); in lowpan_rx_handlers_result()
64 static lowpan_rx_result lowpan_rx_h_frag(struct sk_buff *skb) in lowpan_rx_h_frag() argument
68 if (!(lowpan_is_frag1(*skb_network_header(skb)) || in lowpan_rx_h_frag()
69 lowpan_is_fragn(*skb_network_header(skb)))) in lowpan_rx_h_frag()
72 ret = lowpan_frag_rcv(skb, *skb_network_header(skb) & in lowpan_rx_h_frag()
83 int lowpan_iphc_decompress(struct sk_buff *skb) in lowpan_iphc_decompress() argument
87 if (ieee802154_hdr_peek_addrs(skb, &hdr) < 0) in lowpan_iphc_decompress()
90 return lowpan_header_decompress(skb, skb->dev, &hdr.dest, &hdr.source); in lowpan_iphc_decompress()
93 static lowpan_rx_result lowpan_rx_h_iphc(struct sk_buff *skb) in lowpan_rx_h_iphc() argument
97 if (!lowpan_is_iphc(*skb_network_header(skb))) in lowpan_rx_h_iphc()
103 lowpan_802154_cb(skb)->d_size = 0; in lowpan_rx_h_iphc()
105 ret = lowpan_iphc_decompress(skb); in lowpan_rx_h_iphc()
112 lowpan_rx_result lowpan_rx_h_ipv6(struct sk_buff *skb) in lowpan_rx_h_ipv6() argument
114 if (!lowpan_is_ipv6(*skb_network_header(skb))) in lowpan_rx_h_ipv6()
118 skb_pull(skb, 1); in lowpan_rx_h_ipv6()
127 static lowpan_rx_result lowpan_rx_h_esc(struct sk_buff *skb) in lowpan_rx_h_esc() argument
129 if (!lowpan_is_esc(*skb_network_header(skb))) in lowpan_rx_h_esc()
132 net_warn_ratelimited("%s: %s\n", skb->dev->name, in lowpan_rx_h_esc()
143 static lowpan_rx_result lowpan_rx_h_hc1(struct sk_buff *skb) in lowpan_rx_h_hc1() argument
145 if (!lowpan_is_hc1(*skb_network_header(skb))) in lowpan_rx_h_hc1()
148 net_warn_ratelimited("%s: %s\n", skb->dev->name, in lowpan_rx_h_hc1()
159 static lowpan_rx_result lowpan_rx_h_dff(struct sk_buff *skb) in lowpan_rx_h_dff() argument
161 if (!lowpan_is_dff(*skb_network_header(skb))) in lowpan_rx_h_dff()
164 net_warn_ratelimited("%s: %s\n", skb->dev->name, in lowpan_rx_h_dff()
175 static lowpan_rx_result lowpan_rx_h_bc0(struct sk_buff *skb) in lowpan_rx_h_bc0() argument
177 if (!lowpan_is_bc0(*skb_network_header(skb))) in lowpan_rx_h_bc0()
180 net_warn_ratelimited("%s: %s\n", skb->dev->name, in lowpan_rx_h_bc0()
191 static lowpan_rx_result lowpan_rx_h_mesh(struct sk_buff *skb) in lowpan_rx_h_mesh() argument
193 if (!lowpan_is_mesh(*skb_network_header(skb))) in lowpan_rx_h_mesh()
196 net_warn_ratelimited("%s: %s\n", skb->dev->name, in lowpan_rx_h_mesh()
202 static int lowpan_invoke_rx_handlers(struct sk_buff *skb) in lowpan_invoke_rx_handlers() argument
208 res = rxh(skb); \ in lowpan_invoke_rx_handlers()
224 return lowpan_rx_handlers_result(skb, res); in lowpan_invoke_rx_handlers()
251 static inline bool lowpan_rx_h_check(struct sk_buff *skb) in lowpan_rx_h_check() argument
253 __le16 fc = ieee802154_get_fc_from_skb(skb); in lowpan_rx_h_check()
257 !ieee802154_skb_is_intra_pan_addressing(fc, skb)) in lowpan_rx_h_check()
261 if (unlikely(!skb->len)) in lowpan_rx_h_check()
264 if (lowpan_is_nalp(*skb_network_header(skb)) || in lowpan_rx_h_check()
265 lowpan_is_reserved(*skb_network_header(skb))) in lowpan_rx_h_check()
271 static int lowpan_rcv(struct sk_buff *skb, struct net_device *wdev, in lowpan_rcv() argument
277 skb->pkt_type == PACKET_OTHERHOST || in lowpan_rcv()
278 !lowpan_rx_h_check(skb)) in lowpan_rcv()
286 skb = skb_share_check(skb, GFP_ATOMIC); in lowpan_rcv()
287 if (!skb) in lowpan_rcv()
289 skb->dev = ldev; in lowpan_rcv()
295 if (lowpan_is_frag1(*skb_network_header(skb)) || in lowpan_rcv()
296 lowpan_is_iphc(*skb_network_header(skb))) { in lowpan_rcv()
297 skb = skb_unshare(skb, GFP_ATOMIC); in lowpan_rcv()
298 if (!skb) in lowpan_rcv()
302 return lowpan_invoke_rx_handlers(skb); in lowpan_rcv()
305 kfree_skb(skb); in lowpan_rcv()