Lines Matching refs:skb

36 #define lowpan_cb(skb) ((struct skb_cb *)((skb)->cb))
134 struct sk_buff *skb)
136 struct rt6_info *rt = dst_rt6_info(skb_dst(skb));
145 if (ipv6_addr_any(&lowpan_cb(skb)->gw)) {
153 nexthop = &lowpan_cb(skb)->gw;
162 memcpy(&lowpan_cb(skb)->gw, nexthop, sizeof(struct in6_addr));
235 static int give_skb_to_upper(struct sk_buff *skb, struct net_device *dev)
239 skb_cp = skb_copy(skb, GFP_ATOMIC);
246 static int iphc_decompress(struct sk_buff *skb, struct net_device *netdev,
253 return lowpan_header_decompress(skb, netdev, netdev->dev_addr, saddr);
256 static int recv_pkt(struct sk_buff *skb, struct net_device *dev,
265 if (dev->type != ARPHRD_6LOWPAN || !skb->len)
268 skb_reset_network_header(skb);
270 skb = skb_share_check(skb, GFP_ATOMIC);
271 if (!skb)
275 if (lowpan_is_ipv6(*skb_network_header(skb))) {
277 skb_pull(skb, 1);
282 local_skb = skb_copy_expand(skb, NET_SKB_PAD - 1,
283 skb_tailroom(skb), GFP_ATOMIC);
298 dev->stats.rx_bytes += skb->len;
302 consume_skb(skb);
303 } else if (lowpan_is_iphc(*skb_network_header(skb))) {
304 local_skb = skb_clone(skb, GFP_ATOMIC);
326 dev->stats.rx_bytes += skb->len;
330 consume_skb(skb);
344 static int chan_recv_cb(struct l2cap_chan *chan, struct sk_buff *skb)
358 err = recv_pkt(skb, dev->netdev, peer);
367 static int setup_header(struct sk_buff *skb, struct net_device *netdev,
377 hdr = ipv6_hdr(skb);
384 lowpan_cb(skb)->chan = NULL;
394 peer = peer_lookup_dst(dev, &ipv6_daddr, skb);
403 lowpan_cb(skb)->chan = peer->chan;
408 lowpan_header_compress(skb, netdev, daddr, dev->netdev->dev_addr);
410 err = dev_hard_header(skb, netdev, ETH_P_IPV6, NULL, NULL, 0);
417 static int header_create(struct sk_buff *skb, struct net_device *netdev,
428 static int send_pkt(struct l2cap_chan *chan, struct sk_buff *skb,
435 /* Remember the skb so that we can send EAGAIN to the caller if
438 chan->data = skb;
440 iv.iov_base = skb->data;
441 iv.iov_len = skb->len;
444 iov_iter_kvec(&msg.msg_iter, ITER_SOURCE, &iv, 1, skb->len);
446 err = l2cap_chan_send(chan, &msg, skb->len);
459 static int send_mcast_pkt(struct sk_buff *skb, struct net_device *netdev)
479 local_skb = skb_clone(skb, GFP_ATOMIC);
498 static netdev_tx_t bt_xmit(struct sk_buff *skb, struct net_device *netdev)
504 /* We must take a copy of the skb before we modify/replace the ipv6
507 skb = skb_unshare(skb, GFP_ATOMIC);
508 if (!skb)
516 err = setup_header(skb, netdev, &addr, &addr_type);
518 kfree_skb(skb);
523 if (lowpan_cb(skb)->chan) {
526 &lowpan_cb(skb)->addr, lowpan_cb(skb)->chan);
527 err = send_pkt(lowpan_cb(skb)->chan, skb, netdev);
535 err = send_mcast_pkt(skb, netdev);
538 dev_kfree_skb(skb);