• Willem de Bruijn's avatar
    selftests: net: verify fq per-band packet limit · a0bc96c0
    Willem de Bruijn authored
    Commit 29f834aa ("net_sched: sch_fq: add 3 bands and WRR
    scheduling") introduces multiple traffic bands, and per-band maximum
    packet count.
    
    Per-band limits ensures that packets in one class cannot fill the
    entire qdisc and so cause DoS to the traffic in the other classes.
    
    Verify this behavior:
      1. set the limit to 10 per band
      2. send 20 pkts on band A: verify that 10 are queued, 10 dropped
      3. send 20 pkts on band A: verify that  0 are queued, 20 dropped
      4. send 20 pkts on band B: verify that 10 are queued, 10 dropped
    
    Packets must remain queued for a period to trigger this behavior.
    Use SO_TXTIME to store packets for 100 msec.
    
    The test reuses existing upstream test infra. The script is a fork of
    cmsg_time.sh. The scripts call cmsg_sender.
    
    The test extends cmsg_sender with two arguments:
    
    * '-P' SO_PRIORITY
      There is a subtle difference between IPv4 and IPv6 stack behavior:
      PF_INET/IP_TOS        sets IP header bits and sk_priority
      PF_INET6/IPV6_TCLASS  sets IP header bits BUT NOT sk_priority
    
    * '-n' num pkts
      Send multiple packets in quick succession.
      I first attempted a for loop in the script, but this is too slow in
      virtualized environments, causing flakiness as the 100ms timeout is
      reached and packets are dequeued.
    
    Also do not wait for timestamps to be queued unless timestamps are
    requested.
    Signed-off-by: default avatarWillem de Bruijn <willemb@google.com>
    Reviewed-by: default avatarSimon Horman <horms@kernel.org>
    Reviewed-by: default avatarEric Dumazet <edumazet@google.com>
    Link: https://lore.kernel.org/r/20231116203449.2627525-1-willemdebruijn.kernel@gmail.comSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
    a0bc96c0
cmsg_sender.c 12.3 KB