Lines Matching refs:skb
29 static int lowpan_give_skb_to_device(struct sk_buff *skb) in lowpan_give_skb_to_device() argument
31 skb->protocol = htons(ETH_P_IPV6); in lowpan_give_skb_to_device()
32 skb->dev->stats.rx_packets++; in lowpan_give_skb_to_device()
33 skb->dev->stats.rx_bytes += skb->len; in lowpan_give_skb_to_device()
35 return netif_rx(skb); in lowpan_give_skb_to_device()
38 static int lowpan_rx_handlers_result(struct sk_buff *skb, lowpan_rx_result res) in lowpan_rx_handlers_result() argument
48 kfree_skb(skb); in lowpan_rx_handlers_result()
54 return lowpan_give_skb_to_device(skb); in lowpan_rx_handlers_result()
72 static lowpan_rx_result lowpan_rx_h_frag(struct sk_buff *skb) in lowpan_rx_h_frag() argument
76 if (!(lowpan_is_frag1(*skb_network_header(skb)) || in lowpan_rx_h_frag()
77 lowpan_is_fragn(*skb_network_header(skb)))) in lowpan_rx_h_frag()
80 ret = lowpan_frag_rcv(skb, *skb_network_header(skb) & in lowpan_rx_h_frag()
91 int lowpan_iphc_decompress(struct sk_buff *skb) in lowpan_iphc_decompress() argument
95 if (ieee802154_hdr_peek_addrs(skb, &hdr) < 0) in lowpan_iphc_decompress()
98 return lowpan_header_decompress(skb, skb->dev, &hdr.dest, &hdr.source); in lowpan_iphc_decompress()
101 static lowpan_rx_result lowpan_rx_h_iphc(struct sk_buff *skb) in lowpan_rx_h_iphc() argument
105 if (!lowpan_is_iphc(*skb_network_header(skb))) in lowpan_rx_h_iphc()
111 lowpan_802154_cb(skb)->d_size = 0; in lowpan_rx_h_iphc()
113 ret = lowpan_iphc_decompress(skb); in lowpan_rx_h_iphc()
120 lowpan_rx_result lowpan_rx_h_ipv6(struct sk_buff *skb) in lowpan_rx_h_ipv6() argument
122 if (!lowpan_is_ipv6(*skb_network_header(skb))) in lowpan_rx_h_ipv6()
126 skb_pull(skb, 1); in lowpan_rx_h_ipv6()
135 static lowpan_rx_result lowpan_rx_h_esc(struct sk_buff *skb) in lowpan_rx_h_esc() argument
137 if (!lowpan_is_esc(*skb_network_header(skb))) in lowpan_rx_h_esc()
140 net_warn_ratelimited("%s: %s\n", skb->dev->name, in lowpan_rx_h_esc()
151 static lowpan_rx_result lowpan_rx_h_hc1(struct sk_buff *skb) in lowpan_rx_h_hc1() argument
153 if (!lowpan_is_hc1(*skb_network_header(skb))) in lowpan_rx_h_hc1()
156 net_warn_ratelimited("%s: %s\n", skb->dev->name, in lowpan_rx_h_hc1()
167 static lowpan_rx_result lowpan_rx_h_dff(struct sk_buff *skb) in lowpan_rx_h_dff() argument
169 if (!lowpan_is_dff(*skb_network_header(skb))) in lowpan_rx_h_dff()
172 net_warn_ratelimited("%s: %s\n", skb->dev->name, in lowpan_rx_h_dff()
183 static lowpan_rx_result lowpan_rx_h_bc0(struct sk_buff *skb) in lowpan_rx_h_bc0() argument
185 if (!lowpan_is_bc0(*skb_network_header(skb))) in lowpan_rx_h_bc0()
188 net_warn_ratelimited("%s: %s\n", skb->dev->name, in lowpan_rx_h_bc0()
199 static lowpan_rx_result lowpan_rx_h_mesh(struct sk_buff *skb) in lowpan_rx_h_mesh() argument
201 if (!lowpan_is_mesh(*skb_network_header(skb))) in lowpan_rx_h_mesh()
204 net_warn_ratelimited("%s: %s\n", skb->dev->name, in lowpan_rx_h_mesh()
210 static int lowpan_invoke_rx_handlers(struct sk_buff *skb) in lowpan_invoke_rx_handlers() argument
216 res = rxh(skb); \ in lowpan_invoke_rx_handlers()
232 return lowpan_rx_handlers_result(skb, res); in lowpan_invoke_rx_handlers()
259 static inline bool lowpan_rx_h_check(struct sk_buff *skb) in lowpan_rx_h_check() argument
261 __le16 fc = ieee802154_get_fc_from_skb(skb); in lowpan_rx_h_check()
269 if (unlikely(!skb->len)) in lowpan_rx_h_check()
272 if (lowpan_is_nalp(*skb_network_header(skb)) || in lowpan_rx_h_check()
273 lowpan_is_reserved(*skb_network_header(skb))) in lowpan_rx_h_check()
279 static int lowpan_rcv(struct sk_buff *skb, struct net_device *wdev, in lowpan_rcv() argument
285 skb->pkt_type == PACKET_OTHERHOST || in lowpan_rcv()
286 !lowpan_rx_h_check(skb)) in lowpan_rcv()
294 skb = skb_share_check(skb, GFP_ATOMIC); in lowpan_rcv()
295 if (!skb) in lowpan_rcv()
297 skb->dev = ldev; in lowpan_rcv()
303 if (lowpan_is_frag1(*skb_network_header(skb)) || in lowpan_rcv()
304 lowpan_is_iphc(*skb_network_header(skb))) { in lowpan_rcv()
305 skb = skb_unshare(skb, GFP_ATOMIC); in lowpan_rcv()
306 if (!skb) in lowpan_rcv()
310 return lowpan_invoke_rx_handlers(skb); in lowpan_rcv()
313 kfree_skb(skb); in lowpan_rcv()