• MD Danish Anwar's avatar
    net: ti: icssg_prueth: Add SW TX / RX Coalescing based on hrtimers · dcb3fba6
    MD Danish Anwar authored
    Add SW IRQ coalescing based on hrtimers for RX and TX data path for ICSSG
    driver, which can be enabled by ethtool commands:
    
    - RX coalescing
      ethtool -C eth1 rx-usecs 50
    
    - TX coalescing can be enabled per TX queue
    
      - by default enables coalescing for TX0
      ethtool -C eth1 tx-usecs 50
      - configure TX0
      ethtool -Q eth0 queue_mask 1 --coalesce tx-usecs 100
      - configure TX1
      ethtool -Q eth0 queue_mask 2 --coalesce tx-usecs 100
      - configure TX0 and TX1
      ethtool -Q eth0 queue_mask 3 --coalesce tx-usecs 100 --coalesce
    tx-usecs 100
    
    Minimum value for both rx-usecs and tx-usecs is 20us.
    
    Compared to gro_flush_timeout and napi_defer_hard_irqs this patch allows
    to enable IRQ coalescing for RX path separately.
    
    Benchmarking numbers:
     ===============================================================
    | Method                  | Tput_TX | CPU_TX | Tput_RX | CPU_RX |
    | ==============================================================
    | Default Driver           943 Mbps    31%      517 Mbps  38%   |
    | IRQ Coalescing (Patch)   943 Mbps    28%      518 Mbps  25%   |
     ===============================================================
    Signed-off-by: default avatarMD Danish Anwar <danishanwar@ti.com>
    Reviewed-by: default avatarAndrew Lunn <andrew@lunn.ch>
    Reviewed-by: default avatarSimon Horman <horms@kernel.org>
    Link: https://lore.kernel.org/r/20240430120634.1558998-1-danishanwar@ti.comSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
    dcb3fba6
icssg_common.c 31 KB