mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-16 04:37:07 +07:00
bnxt_en: Set TPA GRO mode flags on 57500 chips properly.
On 57500 chips, hardware GRO mode cannot be determined from the TPA end, so we need to check bp->flags to determine if we are in hardware GRO mode or not. Modify bnxt_set_features so that the TPA flags in bp->flags don't change until the device is closed. This will ensure that the fast path can safely rely on bp->flags to determine the TPA mode. Signed-off-by: Michael Chan <michael.chan@broadcom.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
bee5a188b7
commit
f45b7b78c6
@ -9345,7 +9345,8 @@ static int bnxt_set_features(struct net_device *dev, netdev_features_t features)
|
||||
if (changes & BNXT_FLAG_TPA) {
|
||||
update_tpa = true;
|
||||
if ((bp->flags & BNXT_FLAG_TPA) == 0 ||
|
||||
(flags & BNXT_FLAG_TPA) == 0)
|
||||
(flags & BNXT_FLAG_TPA) == 0 ||
|
||||
(bp->flags & BNXT_FLAG_CHIP_P5))
|
||||
re_init = true;
|
||||
}
|
||||
|
||||
@ -9355,9 +9356,8 @@ static int bnxt_set_features(struct net_device *dev, netdev_features_t features)
|
||||
if (flags != bp->flags) {
|
||||
u32 old_flags = bp->flags;
|
||||
|
||||
bp->flags = flags;
|
||||
|
||||
if (!test_bit(BNXT_STATE_OPEN, &bp->state)) {
|
||||
bp->flags = flags;
|
||||
if (update_tpa)
|
||||
bnxt_set_ring_params(bp);
|
||||
return rc;
|
||||
@ -9365,12 +9365,14 @@ static int bnxt_set_features(struct net_device *dev, netdev_features_t features)
|
||||
|
||||
if (re_init) {
|
||||
bnxt_close_nic(bp, false, false);
|
||||
bp->flags = flags;
|
||||
if (update_tpa)
|
||||
bnxt_set_ring_params(bp);
|
||||
|
||||
return bnxt_open_nic(bp, false, false);
|
||||
}
|
||||
if (update_tpa) {
|
||||
bp->flags = flags;
|
||||
rc = bnxt_set_tpa(bp,
|
||||
(flags & BNXT_FLAG_TPA) ?
|
||||
true : false);
|
||||
|
Loading…
Reference in New Issue
Block a user