Lines Matching refs:skb
40 __be32 __skb_flow_get_ports(const struct sk_buff *skb, int thoff, u8 ip_proto, in __skb_flow_get_ports() argument
46 data = skb->data; in __skb_flow_get_ports()
47 hlen = skb_headlen(skb); in __skb_flow_get_ports()
53 ports = __skb_header_pointer(skb, thoff + poff, in __skb_flow_get_ports()
74 bool __skb_flow_dissect(const struct sk_buff *skb, struct flow_keys *flow, in __skb_flow_dissect() argument
80 data = skb->data; in __skb_flow_dissect()
81 proto = skb->protocol; in __skb_flow_dissect()
82 nhoff = skb_network_offset(skb); in __skb_flow_dissect()
83 hlen = skb_headlen(skb); in __skb_flow_dissect()
94 iph = __skb_header_pointer(skb, nhoff, sizeof(_iph), data, hlen, &_iph); in __skb_flow_dissect()
107 if (!skb) in __skb_flow_dissect()
118 iph = __skb_header_pointer(skb, nhoff, sizeof(_iph), data, hlen, &_iph); in __skb_flow_dissect()
126 if (!skb) in __skb_flow_dissect()
132 if (skb && ip6_flowlabel(iph)) { in __skb_flow_dissect()
154 vlan = __skb_header_pointer(skb, nhoff, sizeof(_vlan), data, hlen, &_vlan); in __skb_flow_dissect()
167 hdr = __skb_header_pointer(skb, nhoff, sizeof(_hdr), data, hlen, &_hdr); in __skb_flow_dissect()
186 hdr = __skb_header_pointer(skb, nhoff, sizeof(_hdr), data, hlen, &_hdr); in __skb_flow_dissect()
209 hdr = __skb_header_pointer(skb, nhoff, sizeof(_hdr), data, hlen, &_hdr); in __skb_flow_dissect()
229 eth = __skb_header_pointer(skb, nhoff, in __skb_flow_dissect()
263 if (skb) in __skb_flow_dissect()
264 flow->ports = __skb_flow_get_ports(skb, nhoff, ip_proto, in __skb_flow_dissect()
316 void __skb_get_hash(struct sk_buff *skb) in __skb_get_hash() argument
320 if (!skb_flow_dissect(skb, &keys)) in __skb_get_hash()
324 skb->l4_hash = 1; in __skb_get_hash()
326 skb->sw_hash = 1; in __skb_get_hash()
328 skb->hash = __flow_hash_from_keys(&keys); in __skb_get_hash()
336 u16 __skb_tx_hash(const struct net_device *dev, struct sk_buff *skb, in __skb_tx_hash() argument
343 if (skb_rx_queue_recorded(skb)) { in __skb_tx_hash()
344 hash = skb_get_rx_queue(skb); in __skb_tx_hash()
351 u8 tc = netdev_get_prio_tc_map(dev, skb->priority); in __skb_tx_hash()
356 return (u16) reciprocal_scale(skb_get_hash(skb), qcount) + qoffset; in __skb_tx_hash()
360 u32 __skb_get_poff(const struct sk_buff *skb, void *data, in __skb_get_poff() argument
371 doff = __skb_header_pointer(skb, poff + 12, sizeof(_doff), in __skb_get_poff()
411 u32 skb_get_poff(const struct sk_buff *skb) in skb_get_poff() argument
415 if (!skb_flow_dissect(skb, &keys)) in skb_get_poff()
418 return __skb_get_poff(skb, skb->data, &keys, skb_headlen(skb)); in skb_get_poff()
421 static inline int get_xps_queue(struct net_device *dev, struct sk_buff *skb) in get_xps_queue() argument
432 dev_maps->cpu_map[skb->sender_cpu - 1]); in get_xps_queue()
437 queue_index = map->queues[reciprocal_scale(skb_get_hash(skb), in get_xps_queue()
451 static u16 __netdev_pick_tx(struct net_device *dev, struct sk_buff *skb) in __netdev_pick_tx() argument
453 struct sock *sk = skb->sk; in __netdev_pick_tx()
456 if (queue_index < 0 || skb->ooo_okay || in __netdev_pick_tx()
458 int new_index = get_xps_queue(dev, skb); in __netdev_pick_tx()
460 new_index = skb_tx_hash(dev, skb); in __netdev_pick_tx()
473 struct sk_buff *skb, in netdev_pick_tx() argument
479 if (skb->sender_cpu == 0) in netdev_pick_tx()
480 skb->sender_cpu = raw_smp_processor_id() + 1; in netdev_pick_tx()
486 queue_index = ops->ndo_select_queue(dev, skb, accel_priv, in netdev_pick_tx()
489 queue_index = __netdev_pick_tx(dev, skb); in netdev_pick_tx()
495 skb_set_queue_mapping(skb, queue_index); in netdev_pick_tx()