• Michael Chan's avatar
    bnxt_en: Improve tx ring reservation logic. · 98fdbe73
    Michael Chan authored
    When the number of TX rings is changed (e.g. ethtool -L, enabling XDP TX
    rings, etc), the current code tries to reserve the new number of TX rings
    before closing and re-opening the NIC.  If we are unable to reserve the
    new TX rings, we abort the operation and keep the current TX rings.
    
    The problem is that the firmware will disable the current TX rings even
    when it cannot reserve the new set of TX rings.  We fix it as follows:
    
    1. Instead of reserving the new set of TX rings, just ask the firmware
    to check if the new set of TX rings is available.  There is a flag in
    the firmware message to do that.  If not available, abort and the
    current TX rings will not be disabled.
    
    2. Do the actual TX ring reservation in the path that opens the NIC.
    We keep the number of TX rings currently successfully reserved.  If the
    number of TX rings is different than the reserved TX rings, we call
    firmware and reserve again.
    Signed-off-by: default avatarMichael Chan <michael.chan@broadcom.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    98fdbe73
bnxt_ethtool.c 70.5 KB