Lines Matching refs:skb

198 static int macvlan_broadcast_one(struct sk_buff *skb,
205 return __dev_forward_skb(dev, skb);
207 skb->dev = dev;
209 skb->pkt_type = PACKET_BROADCAST;
211 skb->pkt_type = PACKET_MULTICAST;
231 static void macvlan_broadcast(struct sk_buff *skb,
236 const struct ethhdr *eth = eth_hdr(skb);
243 if (skb->protocol == htons(ETH_P_PAUSE))
256 nskb = skb_clone(skb, GFP_ATOMIC);
262 macvlan_count_rx(vlan, skb->len + ETH_HLEN,
272 struct sk_buff *skb;
281 while ((skb = __skb_dequeue(&list))) {
282 const struct macvlan_dev *src = MACVLAN_SKB_CB(skb)->src;
288 macvlan_broadcast(skb, port, NULL,
295 macvlan_broadcast(skb, port, src->dev,
303 macvlan_broadcast(skb, port, src->dev,
308 kfree_skb(skb);
313 struct sk_buff *skb)
318 nskb = skb_clone(skb, GFP_ATOMIC);
338 atomic_long_inc(&skb->dev->rx_dropped);
361 static void macvlan_forward_source_one(struct sk_buff *skb,
373 nskb = skb_clone(skb, GFP_ATOMIC);
385 static void macvlan_forward_source(struct sk_buff *skb,
396 macvlan_forward_source_one(skb, entry->vlan);
404 struct sk_buff *skb = *pskb;
405 const struct ethhdr *eth = eth_hdr(skb);
413 port = macvlan_port_get_rcu(skb->dev);
415 skb = ip_check_defrag(skb, IP_DEFRAG_MACVLAN);
416 if (!skb)
418 eth = eth_hdr(skb);
419 macvlan_forward_source(skb, port, eth->h_source);
425 ret = macvlan_broadcast_one(skb, vlan, eth, 0) ?:
426 netif_rx(skb);
431 MACVLAN_SKB_CB(skb)->src = src;
432 macvlan_broadcast_enqueue(port, skb);
437 macvlan_forward_source(skb, port, eth->h_source);
448 kfree_skb(skb);
451 len = skb->len + ETH_HLEN;
452 skb = skb_share_check(skb, GFP_ATOMIC);
453 if (!skb) {
459 skb->dev = dev;
460 skb->pkt_type = PACKET_HOST;
469 static int macvlan_queue_xmit(struct sk_buff *skb, struct net_device *dev)
476 const struct ethhdr *eth = (void *)skb->data;
480 macvlan_broadcast(skb, port, dev, MACVLAN_MODE_BRIDGE);
487 dev_forward_skb(vlan->lowerdev, skb);
494 skb->dev = vlan->lowerdev;
495 return dev_queue_xmit(skb);
498 static inline netdev_tx_t macvlan_netpoll_send_skb(struct macvlan_dev *vlan, struct sk_buff *skb)
502 netpoll_send_skb(vlan->netpoll, skb);
509 static netdev_tx_t macvlan_start_xmit(struct sk_buff *skb,
512 unsigned int len = skb->len;
517 return macvlan_netpoll_send_skb(vlan, skb);
520 skb->dev = vlan->lowerdev;
521 ret = dev_queue_xmit_accel(skb, vlan->fwd_priv);
523 ret = macvlan_queue_xmit(skb, dev);
540 static int macvlan_hard_header(struct sk_buff *skb, struct net_device *dev,
547 return dev_hard_header(skb, lowerdev, type, daddr,
1399 static int macvlan_fill_info_macaddr(struct sk_buff *skb,
1409 if (nla_put(skb, IFLA_MACVLAN_MACADDR, ETH_ALEN, entry->addr))
1415 static int macvlan_fill_info(struct sk_buff *skb,
1422 if (nla_put_u32(skb, IFLA_MACVLAN_MODE, vlan->mode))
1424 if (nla_put_u16(skb, IFLA_MACVLAN_FLAGS, vlan->flags))
1426 if (nla_put_u32(skb, IFLA_MACVLAN_MACADDR_COUNT, vlan->macaddr_count))
1429 nest = nla_nest_start(skb, IFLA_MACVLAN_MACADDR_DATA);
1434 if (macvlan_fill_info_macaddr(skb, vlan, i))
1437 nla_nest_end(skb, nest);