aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ixgbe/ixgbe_common.c
diff options
context:
space:
mode:
authorEmil Tantilov <emil.s.tantilov@intel.com>2011-02-26 01:40:05 -0500
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>2011-03-07 21:05:27 -0500
commit667c75651025049b39a2b5b83d8fc09a7967cce3 (patch)
tree56f3f5a0c9ef8718069d1d11f281760fb02de729 /drivers/net/ixgbe/ixgbe_common.c
parent037c6d0a33453bf025c6d6b21e5a0fabe117a797 (diff)
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>
Diffstat (limited to 'drivers/net/ixgbe/ixgbe_common.c')
-rw-r--r--drivers/net/ixgbe/ixgbe_common.c34
1 files changed, 27 insertions, 7 deletions
diff --git a/drivers/net/ixgbe/ixgbe_common.c b/drivers/net/ixgbe/ixgbe_common.c
index 94a56217027..85cc3014373 100644
--- a/drivers/net/ixgbe/ixgbe_common.c
+++ b/drivers/net/ixgbe/ixgbe_common.c
@@ -136,17 +136,29 @@ s32 ixgbe_clear_hw_cntrs_generic(struct ixgbe_hw *hw)
136 IXGBE_READ_REG(hw, IXGBE_MRFC); 136 IXGBE_READ_REG(hw, IXGBE_MRFC);
137 IXGBE_READ_REG(hw, IXGBE_RLEC); 137 IXGBE_READ_REG(hw, IXGBE_RLEC);
138 IXGBE_READ_REG(hw, IXGBE_LXONTXC); 138 IXGBE_READ_REG(hw, IXGBE_LXONTXC);
139 IXGBE_READ_REG(hw, IXGBE_LXONRXC);
140 IXGBE_READ_REG(hw, IXGBE_LXOFFTXC); 139 IXGBE_READ_REG(hw, IXGBE_LXOFFTXC);
141 IXGBE_READ_REG(hw, IXGBE_LXOFFRXC); 140 if (hw->mac.type >= ixgbe_mac_82599EB) {
141 IXGBE_READ_REG(hw, IXGBE_LXONRXCNT);
142 IXGBE_READ_REG(hw, IXGBE_LXOFFRXCNT);
143 } else {
144 IXGBE_READ_REG(hw, IXGBE_LXONRXC);
145 IXGBE_READ_REG(hw, IXGBE_LXOFFRXC);
146 }
142 147
143 for (i = 0; i < 8; i++) { 148 for (i = 0; i < 8; i++) {
144 IXGBE_READ_REG(hw, IXGBE_PXONTXC(i)); 149 IXGBE_READ_REG(hw, IXGBE_PXONTXC(i));
145 IXGBE_READ_REG(hw, IXGBE_PXONRXC(i));
146 IXGBE_READ_REG(hw, IXGBE_PXOFFTXC(i)); 150 IXGBE_READ_REG(hw, IXGBE_PXOFFTXC(i));
147 IXGBE_READ_REG(hw, IXGBE_PXOFFRXC(i)); 151 if (hw->mac.type >= ixgbe_mac_82599EB) {
152 IXGBE_READ_REG(hw, IXGBE_PXONRXCNT(i));
153 IXGBE_READ_REG(hw, IXGBE_PXOFFRXCNT(i));
154 } else {
155 IXGBE_READ_REG(hw, IXGBE_PXONRXC(i));
156 IXGBE_READ_REG(hw, IXGBE_PXOFFRXC(i));
157 }
148 } 158 }
149 159 if (hw->mac.type >= ixgbe_mac_82599EB)
160 for (i = 0; i < 8; i++)
161 IXGBE_READ_REG(hw, IXGBE_PXON2OFFCNT(i));
150 IXGBE_READ_REG(hw, IXGBE_PRC64); 162 IXGBE_READ_REG(hw, IXGBE_PRC64);
151 IXGBE_READ_REG(hw, IXGBE_PRC127); 163 IXGBE_READ_REG(hw, IXGBE_PRC127);
152 IXGBE_READ_REG(hw, IXGBE_PRC255); 164 IXGBE_READ_REG(hw, IXGBE_PRC255);
@@ -184,9 +196,17 @@ s32 ixgbe_clear_hw_cntrs_generic(struct ixgbe_hw *hw)
184 IXGBE_READ_REG(hw, IXGBE_BPTC); 196 IXGBE_READ_REG(hw, IXGBE_BPTC);
185 for (i = 0; i < 16; i++) { 197 for (i = 0; i < 16; i++) {
186 IXGBE_READ_REG(hw, IXGBE_QPRC(i)); 198 IXGBE_READ_REG(hw, IXGBE_QPRC(i));
187 IXGBE_READ_REG(hw, IXGBE_QBRC(i));
188 IXGBE_READ_REG(hw, IXGBE_QPTC(i)); 199 IXGBE_READ_REG(hw, IXGBE_QPTC(i));
189 IXGBE_READ_REG(hw, IXGBE_QBTC(i)); 200 if (hw->mac.type >= ixgbe_mac_82599EB) {
201 IXGBE_READ_REG(hw, IXGBE_QBRC_L(i));
202 IXGBE_READ_REG(hw, IXGBE_QBRC_H(i));
203 IXGBE_READ_REG(hw, IXGBE_QBTC_L(i));
204 IXGBE_READ_REG(hw, IXGBE_QBTC_H(i));
205 IXGBE_READ_REG(hw, IXGBE_QPRDC(i));
206 } else {
207 IXGBE_READ_REG(hw, IXGBE_QBRC(i));
208 IXGBE_READ_REG(hw, IXGBE_QBTC(i));
209 }
190 } 210 }
191 211
192 return 0; 212 return 0;