ixgbe: clear correct counters for flow control on 82599
The 82599 was not correctly having some of it's counters cleared for flow control. This change corrects that. Signed-off-by: Emil Tantilov <emil.s.tantilov@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
This commit is contained in:
Родитель
037c6d0a33
Коммит
667c756510
|
@ -136,17 +136,29 @@ s32 ixgbe_clear_hw_cntrs_generic(struct ixgbe_hw *hw)
|
|||
IXGBE_READ_REG(hw, IXGBE_MRFC);
|
||||
IXGBE_READ_REG(hw, IXGBE_RLEC);
|
||||
IXGBE_READ_REG(hw, IXGBE_LXONTXC);
|
||||
IXGBE_READ_REG(hw, IXGBE_LXONRXC);
|
||||
IXGBE_READ_REG(hw, IXGBE_LXOFFTXC);
|
||||
IXGBE_READ_REG(hw, IXGBE_LXOFFRXC);
|
||||
if (hw->mac.type >= ixgbe_mac_82599EB) {
|
||||
IXGBE_READ_REG(hw, IXGBE_LXONRXCNT);
|
||||
IXGBE_READ_REG(hw, IXGBE_LXOFFRXCNT);
|
||||
} else {
|
||||
IXGBE_READ_REG(hw, IXGBE_LXONRXC);
|
||||
IXGBE_READ_REG(hw, IXGBE_LXOFFRXC);
|
||||
}
|
||||
|
||||
for (i = 0; i < 8; i++) {
|
||||
IXGBE_READ_REG(hw, IXGBE_PXONTXC(i));
|
||||
IXGBE_READ_REG(hw, IXGBE_PXONRXC(i));
|
||||
IXGBE_READ_REG(hw, IXGBE_PXOFFTXC(i));
|
||||
IXGBE_READ_REG(hw, IXGBE_PXOFFRXC(i));
|
||||
if (hw->mac.type >= ixgbe_mac_82599EB) {
|
||||
IXGBE_READ_REG(hw, IXGBE_PXONRXCNT(i));
|
||||
IXGBE_READ_REG(hw, IXGBE_PXOFFRXCNT(i));
|
||||
} else {
|
||||
IXGBE_READ_REG(hw, IXGBE_PXONRXC(i));
|
||||
IXGBE_READ_REG(hw, IXGBE_PXOFFRXC(i));
|
||||
}
|
||||
}
|
||||
|
||||
if (hw->mac.type >= ixgbe_mac_82599EB)
|
||||
for (i = 0; i < 8; i++)
|
||||
IXGBE_READ_REG(hw, IXGBE_PXON2OFFCNT(i));
|
||||
IXGBE_READ_REG(hw, IXGBE_PRC64);
|
||||
IXGBE_READ_REG(hw, IXGBE_PRC127);
|
||||
IXGBE_READ_REG(hw, IXGBE_PRC255);
|
||||
|
@ -184,9 +196,17 @@ s32 ixgbe_clear_hw_cntrs_generic(struct ixgbe_hw *hw)
|
|||
IXGBE_READ_REG(hw, IXGBE_BPTC);
|
||||
for (i = 0; i < 16; i++) {
|
||||
IXGBE_READ_REG(hw, IXGBE_QPRC(i));
|
||||
IXGBE_READ_REG(hw, IXGBE_QBRC(i));
|
||||
IXGBE_READ_REG(hw, IXGBE_QPTC(i));
|
||||
IXGBE_READ_REG(hw, IXGBE_QBTC(i));
|
||||
if (hw->mac.type >= ixgbe_mac_82599EB) {
|
||||
IXGBE_READ_REG(hw, IXGBE_QBRC_L(i));
|
||||
IXGBE_READ_REG(hw, IXGBE_QBRC_H(i));
|
||||
IXGBE_READ_REG(hw, IXGBE_QBTC_L(i));
|
||||
IXGBE_READ_REG(hw, IXGBE_QBTC_H(i));
|
||||
IXGBE_READ_REG(hw, IXGBE_QPRDC(i));
|
||||
} else {
|
||||
IXGBE_READ_REG(hw, IXGBE_QBRC(i));
|
||||
IXGBE_READ_REG(hw, IXGBE_QBTC(i));
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
|
|
@ -659,6 +659,8 @@
|
|||
#define IXGBE_QPTC(_i) (0x06030 + ((_i) * 0x40)) /* 16 of these */
|
||||
#define IXGBE_QBRC(_i) (0x01034 + ((_i) * 0x40)) /* 16 of these */
|
||||
#define IXGBE_QBTC(_i) (0x06034 + ((_i) * 0x40)) /* 16 of these */
|
||||
#define IXGBE_QBRC_L(_i) (0x01034 + ((_i) * 0x40)) /* 16 of these */
|
||||
#define IXGBE_QBRC_H(_i) (0x01038 + ((_i) * 0x40)) /* 16 of these */
|
||||
#define IXGBE_QPRDC(_i) (0x01430 + ((_i) * 0x40)) /* 16 of these */
|
||||
#define IXGBE_QBTC_L(_i) (0x08700 + ((_i) * 0x8)) /* 16 of these */
|
||||
#define IXGBE_QBTC_H(_i) (0x08704 + ((_i) * 0x8)) /* 16 of these */
|
||||
|
|
Загрузка…
Ссылка в новой задаче