mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-01-11 17:10:13 +00:00
net_sched: cake: use qdisc_pkt_segs()
Use new qdisc_pkt_segs() to avoid a cache line miss in cake_enqueue() for non GSO packets. cake_overhead() does not have to recompute it. Signed-off-by: Eric Dumazet <edumazet@google.com> Link: https://patch.msgid.link/20251121083256.674562-7-edumazet@google.com Signed-off-by: Paolo Abeni <pabeni@redhat.com>
This commit is contained in:
parent
2773cb0b31
commit
c5d34f4583
@ -1398,12 +1398,12 @@ static u32 cake_overhead(struct cake_sched_data *q, const struct sk_buff *skb)
|
||||
const struct skb_shared_info *shinfo = skb_shinfo(skb);
|
||||
unsigned int hdr_len, last_len = 0;
|
||||
u32 off = skb_network_offset(skb);
|
||||
u16 segs = qdisc_pkt_segs(skb);
|
||||
u32 len = qdisc_pkt_len(skb);
|
||||
u16 segs = 1;
|
||||
|
||||
q->avg_netoff = cake_ewma(q->avg_netoff, off << 16, 8);
|
||||
|
||||
if (!shinfo->gso_size)
|
||||
if (segs == 1)
|
||||
return cake_calc_overhead(q, len, off);
|
||||
|
||||
/* borrowed from qdisc_pkt_len_segs_init() */
|
||||
@ -1430,12 +1430,6 @@ static u32 cake_overhead(struct cake_sched_data *q, const struct sk_buff *skb)
|
||||
hdr_len += sizeof(struct udphdr);
|
||||
}
|
||||
|
||||
if (unlikely(shinfo->gso_type & SKB_GSO_DODGY))
|
||||
segs = DIV_ROUND_UP(skb->len - hdr_len,
|
||||
shinfo->gso_size);
|
||||
else
|
||||
segs = shinfo->gso_segs;
|
||||
|
||||
len = shinfo->gso_size + hdr_len;
|
||||
last_len = skb->len - shinfo->gso_size * (segs - 1);
|
||||
|
||||
@ -1788,7 +1782,7 @@ static s32 cake_enqueue(struct sk_buff *skb, struct Qdisc *sch,
|
||||
if (unlikely(len > b->max_skblen))
|
||||
b->max_skblen = len;
|
||||
|
||||
if (skb_is_gso(skb) && q->rate_flags & CAKE_FLAG_SPLIT_GSO) {
|
||||
if (qdisc_pkt_segs(skb) > 1 && q->rate_flags & CAKE_FLAG_SPLIT_GSO) {
|
||||
struct sk_buff *segs, *nskb;
|
||||
netdev_features_t features = netif_skb_features(skb);
|
||||
unsigned int slen = 0, numsegs = 0;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user