Lines Matching refs:skb

36 lowpan_addr_info *lowpan_skb_priv(const struct sk_buff *skb)  in lowpan_skb_priv()  argument
38 WARN_ON_ONCE(skb_headroom(skb) < sizeof(struct lowpan_addr_info)); in lowpan_skb_priv()
39 return (struct lowpan_addr_info *)(skb->data - in lowpan_skb_priv()
50 int lowpan_header_create(struct sk_buff *skb, struct net_device *ldev, in lowpan_header_create() argument
70 info = lowpan_skb_priv(skb); in lowpan_header_create()
84 lowpan_alloc_frag(struct sk_buff *skb, int size, in lowpan_alloc_frag() argument
87 struct net_device *wdev = lowpan_dev_info(skb->dev)->wdev; in lowpan_alloc_frag()
96 frag->priority = skb->priority; in lowpan_alloc_frag()
99 *mac_cb(frag) = *mac_cb(skb); in lowpan_alloc_frag()
102 memcpy(skb_put(frag, skb->mac_len), in lowpan_alloc_frag()
103 skb_mac_header(skb), skb->mac_len); in lowpan_alloc_frag()
121 lowpan_xmit_fragment(struct sk_buff *skb, const struct ieee802154_hdr *wpan_hdr, in lowpan_xmit_fragment() argument
129 frag = lowpan_alloc_frag(skb, frag_hdrlen + len, wpan_hdr, frag1); in lowpan_xmit_fragment()
134 memcpy(skb_put(frag, len), skb_network_header(skb) + offset, len); in lowpan_xmit_fragment()
142 lowpan_xmit_fragmented(struct sk_buff *skb, struct net_device *ldev, in lowpan_xmit_fragmented() argument
161 skb_network_header_len(skb), 8); in lowpan_xmit_fragmented()
163 skb_offset = skb_network_header_len(skb); in lowpan_xmit_fragmented()
164 skb_unprocessed = skb->len - skb->mac_len - skb_offset; in lowpan_xmit_fragmented()
166 rc = lowpan_xmit_fragment(skb, wpan_hdr, frag_hdr, in lowpan_xmit_fragmented()
168 frag_len + skb_network_header_len(skb), in lowpan_xmit_fragmented()
188 rc = lowpan_xmit_fragment(skb, wpan_hdr, frag_hdr, in lowpan_xmit_fragmented()
200 consume_skb(skb); in lowpan_xmit_fragmented()
204 kfree_skb(skb); in lowpan_xmit_fragmented()
208 static int lowpan_header(struct sk_buff *skb, struct net_device *ldev, in lowpan_header() argument
213 struct ieee802154_mac_cb *cb = mac_cb_init(skb); in lowpan_header()
217 memcpy(&info, lowpan_skb_priv(skb), sizeof(info)); in lowpan_header()
223 *dgram_size = skb->len; in lowpan_header()
224 lowpan_header_compress(skb, ldev, daddr, saddr); in lowpan_header()
226 *dgram_offset = (*dgram_size - skb->len) + skb_network_header_len(skb); in lowpan_header()
251 return wpan_dev_hard_header(skb, lowpan_dev_info(ldev)->wdev, &da, &sa, in lowpan_header()
255 netdev_tx_t lowpan_xmit(struct sk_buff *skb, struct net_device *ldev) in lowpan_xmit() argument
263 WARN_ON_ONCE(skb->len > IPV6_MIN_MTU); in lowpan_xmit()
268 skb = skb_unshare(skb, GFP_ATOMIC); in lowpan_xmit()
269 if (!skb) in lowpan_xmit()
272 ret = lowpan_header(skb, ldev, &dgram_size, &dgram_offset); in lowpan_xmit()
274 kfree_skb(skb); in lowpan_xmit()
278 if (ieee802154_hdr_peek(skb, &wpan_hdr) < 0) { in lowpan_xmit()
279 kfree_skb(skb); in lowpan_xmit()
285 if (skb_tail_pointer(skb) - skb_network_header(skb) <= max_single) { in lowpan_xmit()
286 skb->dev = lowpan_dev_info(ldev)->wdev; in lowpan_xmit()
289 return dev_queue_xmit(skb); in lowpan_xmit()
294 rc = lowpan_xmit_fragmented(skb, ldev, &wpan_hdr, dgram_size, in lowpan_xmit()