• Florian Fainelli's avatar
    net: bcmgenet: Implement TX coalescing control knobs · 2f913070
    Florian Fainelli authored
    Configuring the ethtool tx-frames property, which translates into N
    packets before a TX interrupt is the simplest configuration scheme
    because it requires no locking neither at the softare nor hardware
    level, and is completely indepedent from the link speed. Since ethtool
    does not allow per-tx queue coalescing parameters, we apply the same
    setting to any transmit queue.
    
    We can no longer enable the BDONE/PDONE interrupts as those would fire
    for each packet/buffer received, which would defeat the MBDONE interrupt
    purpose. The MBDONE interrupt is guaranteed to correspond to a
    PDONE/BDONE interrupt when the threshold is set to 1, but offers
    interrupt coalescing when the value is > 1.
    
    Since the HW is configured to generate an interrupt when the ring
    becomes emtpy, we have to deny any timeout/timer settings coming from
    user-space to indicate we can only generate an interrupt very <N>
    packets.
    
    While we are at it, fix the DMA_INTR_THRESHOLD_MASK value which was off
    by one bit (0xff vs. 0x1ff).
    Signed-off-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    2f913070
bcmgenet.c 91.3 KB