• Michael Chan's avatar
    bnxt_en: Fix mqprio and XDP ring checking logic · 2038cc59
    Michael Chan authored
    In bnxt_reserve_rings(), there is logic to check that the number of TX
    rings reserved is enough to cover all the mqprio TCs, but it fails to
    account for the TX XDP rings.  So the check will always fail if there
    are mqprio TCs and TX XDP rings.  As a result, the driver always fails
    to initialize after the XDP program is attached and the device will be
    brought down.  A subsequent ifconfig up will also fail because the
    number of TX rings is set to an inconsistent number.  Fix the check to
    properly account for TX XDP rings.  If the check fails, set the number
    of TX rings back to a consistent number after calling netdev_reset_tc().
    
    Fixes: 674f50a5 ("bnxt_en: Implement new method to reserve rings.")
    Reviewed-by: default avatarHongguang Gao <hongguang.gao@broadcom.com>
    Signed-off-by: default avatarMichael Chan <michael.chan@broadcom.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    2038cc59
bnxt.c 365 KB