Skip to content

Commit bbd98fe

Browse files
Alexander Duyckdavem330
authored andcommitted
igb: Fix DCA errors and do not use context index for 82576
82576 was being incorrectly flagged as needing a context index. It does not as each ring has it's own table of 2 contexts. Driver was registering after registering the driver instead of the other way around. Signed-off-by: Alexander Duyck <alexander.h.duyck@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com> Signed-off-by: David S. Miller <davem@davemloft.net>
1 parent 5d6e430 commit bbd98fe

File tree

2 files changed

+10
-15
lines changed

2 files changed

+10
-15
lines changed

drivers/net/igb/igb.h

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -300,11 +300,10 @@ struct igb_adapter {
300300

301301
#define IGB_FLAG_HAS_MSI (1 << 0)
302302
#define IGB_FLAG_MSI_ENABLE (1 << 1)
303-
#define IGB_FLAG_HAS_DCA (1 << 2)
304-
#define IGB_FLAG_DCA_ENABLED (1 << 3)
305-
#define IGB_FLAG_IN_NETPOLL (1 << 5)
306-
#define IGB_FLAG_QUAD_PORT_A (1 << 6)
307-
#define IGB_FLAG_NEED_CTX_IDX (1 << 7)
303+
#define IGB_FLAG_DCA_ENABLED (1 << 2)
304+
#define IGB_FLAG_IN_NETPOLL (1 << 3)
305+
#define IGB_FLAG_QUAD_PORT_A (1 << 4)
306+
#define IGB_FLAG_NEED_CTX_IDX (1 << 5)
308307

309308
enum e1000_state_t {
310309
__IGB_TESTING,

drivers/net/igb/igb_main.c

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -206,10 +206,11 @@ static int __init igb_init_module(void)
206206

207207
global_quad_port_a = 0;
208208

209-
ret = pci_register_driver(&igb_driver);
210209
#ifdef CONFIG_IGB_DCA
211210
dca_register_notify(&dca_notifier);
212211
#endif
212+
213+
ret = pci_register_driver(&igb_driver);
213214
return ret;
214215
}
215216

@@ -1156,11 +1157,10 @@ static int __devinit igb_probe(struct pci_dev *pdev,
11561157

11571158
/* set flags */
11581159
switch (hw->mac.type) {
1159-
case e1000_82576:
11601160
case e1000_82575:
1161-
adapter->flags |= IGB_FLAG_HAS_DCA;
11621161
adapter->flags |= IGB_FLAG_NEED_CTX_IDX;
11631162
break;
1163+
case e1000_82576:
11641164
default:
11651165
break;
11661166
}
@@ -1310,8 +1310,7 @@ static int __devinit igb_probe(struct pci_dev *pdev,
13101310
goto err_register;
13111311

13121312
#ifdef CONFIG_IGB_DCA
1313-
if ((adapter->flags & IGB_FLAG_HAS_DCA) &&
1314-
(dca_add_requester(&pdev->dev) == 0)) {
1313+
if (dca_add_requester(&pdev->dev) == 0) {
13151314
adapter->flags |= IGB_FLAG_DCA_ENABLED;
13161315
dev_info(&pdev->dev, "DCA enabled\n");
13171316
/* Always use CB2 mode, difference is masked
@@ -3473,19 +3472,16 @@ static int __igb_notify_dca(struct device *dev, void *data)
34733472
struct e1000_hw *hw = &adapter->hw;
34743473
unsigned long event = *(unsigned long *)data;
34753474

3476-
if (!(adapter->flags & IGB_FLAG_HAS_DCA))
3477-
goto out;
3478-
34793475
switch (event) {
34803476
case DCA_PROVIDER_ADD:
34813477
/* if already enabled, don't do it again */
34823478
if (adapter->flags & IGB_FLAG_DCA_ENABLED)
34833479
break;
3484-
adapter->flags |= IGB_FLAG_DCA_ENABLED;
34853480
/* Always use CB2 mode, difference is masked
34863481
* in the CB driver. */
34873482
wr32(E1000_DCA_CTRL, 2);
34883483
if (dca_add_requester(dev) == 0) {
3484+
adapter->flags |= IGB_FLAG_DCA_ENABLED;
34893485
dev_info(&adapter->pdev->dev, "DCA enabled\n");
34903486
igb_setup_dca(adapter);
34913487
break;
@@ -3502,7 +3498,7 @@ static int __igb_notify_dca(struct device *dev, void *data)
35023498
}
35033499
break;
35043500
}
3505-
out:
3501+
35063502
return 0;
35073503
}
35083504

0 commit comments

Comments
 (0)