diff options
author | Igor Russkikh <igor.russkikh@aquantia.com> | 2017-09-25 10:48:48 +0300 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2017-09-26 13:44:31 -0700 |
commit | 3aec6412e007b294d4c135f5c7ed5e5ecf37dd2e (patch) | |
tree | 343643f24c6b268e14a8025c2da5701d04caf680 /drivers/net/ethernet/aquantia/atlantic/aq_cfg.h | |
parent | d85fc17beeb06f9979d63fe4d9fbffbb1a00bba4 (diff) | |
download | op-kernel-dev-3aec6412e007b294d4c135f5c7ed5e5ecf37dd2e.zip op-kernel-dev-3aec6412e007b294d4c135f5c7ed5e5ecf37dd2e.tar.gz |
aquantia: Fix Tx queue hangups
Driver did a poor job in managing its Tx queues: Sometimes it could stop
tx queues due to link down condition in aq_nic_xmit - but never waked up
them. That led to Tx path total suspend.
This patch fixes this and improves generic queue management:
- introduces queue restart counter
- uses generic netif_ interface to disable and enable tx path
- refactors link up/down condition and introduces dmesg log event when
link changes.
- introduces new constant for minimum descriptors count required for queue
wakeup
Signed-off-by: Pavel Belous <Pavel.Belous@aquantia.com>
Signed-off-by: Igor Russkikh <igor.russkikh@aquantia.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/aquantia/atlantic/aq_cfg.h')
-rw-r--r-- | drivers/net/ethernet/aquantia/atlantic/aq_cfg.h | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/net/ethernet/aquantia/atlantic/aq_cfg.h b/drivers/net/ethernet/aquantia/atlantic/aq_cfg.h index 2149864..0fdaaa6 100644 --- a/drivers/net/ethernet/aquantia/atlantic/aq_cfg.h +++ b/drivers/net/ethernet/aquantia/atlantic/aq_cfg.h @@ -51,6 +51,10 @@ #define AQ_CFG_SKB_FRAGS_MAX 32U +/* Number of descriptors available in one ring to resume this ring queue + */ +#define AQ_CFG_RESTART_DESC_THRES (AQ_CFG_SKB_FRAGS_MAX * 2) + #define AQ_CFG_NAPI_WEIGHT 64U #define AQ_CFG_MULTICAST_ADDRESS_MAX 32U |