diff options
Diffstat (limited to 'drivers/net/tg3.c')
-rw-r--r-- | drivers/net/tg3.c | 14 |
1 files changed, 6 insertions, 8 deletions
diff --git a/drivers/net/tg3.c b/drivers/net/tg3.c index 8bc28b14c70f..af8263a1580e 100644 --- a/drivers/net/tg3.c +++ b/drivers/net/tg3.c | |||
@@ -9408,6 +9408,12 @@ static int __devinit tg3_get_invariants(struct tg3 *tp) | |||
9408 | } | 9408 | } |
9409 | } | 9409 | } |
9410 | 9410 | ||
9411 | /* 5700 BX chips need to have their TX producer index mailboxes | ||
9412 | * written twice to workaround a bug. | ||
9413 | */ | ||
9414 | if (GET_CHIP_REV(tp->pci_chip_rev_id) == CHIPREV_5700_BX) | ||
9415 | tp->tg3_flags |= TG3_FLAG_TXD_MBOX_HWBUG; | ||
9416 | |||
9411 | /* Back to back register writes can cause problems on this chip, | 9417 | /* Back to back register writes can cause problems on this chip, |
9412 | * the workaround is to read back all reg writes except those to | 9418 | * the workaround is to read back all reg writes except those to |
9413 | * mailbox regs. See tg3_write_indirect_reg32(). | 9419 | * mailbox regs. See tg3_write_indirect_reg32(). |
@@ -9682,14 +9688,6 @@ static int __devinit tg3_get_invariants(struct tg3 *tp) | |||
9682 | else | 9688 | else |
9683 | tp->tg3_flags &= ~TG3_FLAG_POLL_SERDES; | 9689 | tp->tg3_flags &= ~TG3_FLAG_POLL_SERDES; |
9684 | 9690 | ||
9685 | /* 5700 BX chips need to have their TX producer index mailboxes | ||
9686 | * written twice to workaround a bug. | ||
9687 | */ | ||
9688 | if (GET_CHIP_REV(tp->pci_chip_rev_id) == CHIPREV_5700_BX) | ||
9689 | tp->tg3_flags |= TG3_FLAG_TXD_MBOX_HWBUG; | ||
9690 | else | ||
9691 | tp->tg3_flags &= ~TG3_FLAG_TXD_MBOX_HWBUG; | ||
9692 | |||
9693 | /* It seems all chips can get confused if TX buffers | 9691 | /* It seems all chips can get confused if TX buffers |
9694 | * straddle the 4GB address boundary in some cases. | 9692 | * straddle the 4GB address boundary in some cases. |
9695 | */ | 9693 | */ |