diff options
Diffstat (limited to 'drivers/net/cxgb3')
-rw-r--r-- | drivers/net/cxgb3/common.h | 1 | ||||
-rw-r--r-- | drivers/net/cxgb3/xgmac.c | 4 |
2 files changed, 4 insertions, 1 deletions
diff --git a/drivers/net/cxgb3/common.h b/drivers/net/cxgb3/common.h index ada5e4b89cd8..7e9e43d1074e 100644 --- a/drivers/net/cxgb3/common.h +++ b/drivers/net/cxgb3/common.h | |||
@@ -513,6 +513,7 @@ struct cmac { | |||
513 | u64 rx_mcnt; | 513 | u64 rx_mcnt; |
514 | unsigned int toggle_cnt; | 514 | unsigned int toggle_cnt; |
515 | unsigned int txen; | 515 | unsigned int txen; |
516 | u64 rx_pause; | ||
516 | struct mac_stats stats; | 517 | struct mac_stats stats; |
517 | }; | 518 | }; |
518 | 519 | ||
diff --git a/drivers/net/cxgb3/xgmac.c b/drivers/net/cxgb3/xgmac.c index 1d1c3919ab66..ff9e9dcbd87d 100644 --- a/drivers/net/cxgb3/xgmac.c +++ b/drivers/net/cxgb3/xgmac.c | |||
@@ -452,6 +452,7 @@ int t3_mac_enable(struct cmac *mac, int which) | |||
452 | A_XGM_TX_SPI4_SOP_EOP_CNT + | 452 | A_XGM_TX_SPI4_SOP_EOP_CNT + |
453 | oft))); | 453 | oft))); |
454 | mac->rx_mcnt = s->rx_frames; | 454 | mac->rx_mcnt = s->rx_frames; |
455 | mac->rx_pause = s->rx_pause; | ||
455 | mac->rx_xcnt = (G_TXSPI4SOPCNT(t3_read_reg(adap, | 456 | mac->rx_xcnt = (G_TXSPI4SOPCNT(t3_read_reg(adap, |
456 | A_XGM_RX_SPI4_SOP_EOP_CNT + | 457 | A_XGM_RX_SPI4_SOP_EOP_CNT + |
457 | oft))); | 458 | oft))); |
@@ -504,7 +505,7 @@ int t3b2_mac_watchdog_task(struct cmac *mac) | |||
504 | tx_xcnt = 1; /* By default tx_xcnt is making progress */ | 505 | tx_xcnt = 1; /* By default tx_xcnt is making progress */ |
505 | tx_tcnt = mac->tx_tcnt; /* If tx_mcnt is progressing ignore tx_tcnt */ | 506 | tx_tcnt = mac->tx_tcnt; /* If tx_mcnt is progressing ignore tx_tcnt */ |
506 | rx_xcnt = 1; /* By default rx_xcnt is making progress */ | 507 | rx_xcnt = 1; /* By default rx_xcnt is making progress */ |
507 | if (tx_mcnt == mac->tx_mcnt) { | 508 | if (tx_mcnt == mac->tx_mcnt && mac->rx_pause == s->rx_pause) { |
508 | tx_xcnt = (G_TXSPI4SOPCNT(t3_read_reg(adap, | 509 | tx_xcnt = (G_TXSPI4SOPCNT(t3_read_reg(adap, |
509 | A_XGM_TX_SPI4_SOP_EOP_CNT + | 510 | A_XGM_TX_SPI4_SOP_EOP_CNT + |
510 | mac->offset))); | 511 | mac->offset))); |
@@ -560,6 +561,7 @@ out: | |||
560 | mac->tx_mcnt = s->tx_frames; | 561 | mac->tx_mcnt = s->tx_frames; |
561 | mac->rx_xcnt = rx_xcnt; | 562 | mac->rx_xcnt = rx_xcnt; |
562 | mac->rx_mcnt = s->rx_frames; | 563 | mac->rx_mcnt = s->rx_frames; |
564 | mac->rx_pause = s->rx_pause; | ||
563 | if (status == 1) { | 565 | if (status == 1) { |
564 | t3_write_reg(adap, A_XGM_TX_CTRL + mac->offset, 0); | 566 | t3_write_reg(adap, A_XGM_TX_CTRL + mac->offset, 0); |
565 | t3_read_reg(adap, A_XGM_TX_CTRL + mac->offset); /* flush */ | 567 | t3_read_reg(adap, A_XGM_TX_CTRL + mac->offset); /* flush */ |