diff options
-rw-r--r-- | drivers/net/ethernet/sfc/efx.h | 3 | ||||
-rw-r--r-- | drivers/net/ethernet/sfc/ethtool.c | 4 |
2 files changed, 5 insertions, 2 deletions
diff --git a/drivers/net/ethernet/sfc/efx.h b/drivers/net/ethernet/sfc/efx.h index 601224736b9b..dbd7b78fe01c 100644 --- a/drivers/net/ethernet/sfc/efx.h +++ b/drivers/net/ethernet/sfc/efx.h | |||
@@ -66,6 +66,9 @@ void efx_schedule_slow_fill(struct efx_rx_queue *rx_queue); | |||
66 | #define EFX_RXQ_MIN_ENT 128U | 66 | #define EFX_RXQ_MIN_ENT 128U |
67 | #define EFX_TXQ_MIN_ENT(efx) (2 * efx_tx_max_skb_descs(efx)) | 67 | #define EFX_TXQ_MIN_ENT(efx) (2 * efx_tx_max_skb_descs(efx)) |
68 | 68 | ||
69 | #define EFX_TXQ_MAX_ENT(efx) (EFX_WORKAROUND_35388(efx) ? \ | ||
70 | EFX_MAX_DMAQ_SIZE / 2 : EFX_MAX_DMAQ_SIZE) | ||
71 | |||
69 | /* Filters */ | 72 | /* Filters */ |
70 | 73 | ||
71 | /** | 74 | /** |
diff --git a/drivers/net/ethernet/sfc/ethtool.c b/drivers/net/ethernet/sfc/ethtool.c index f181522688b2..229428915aa8 100644 --- a/drivers/net/ethernet/sfc/ethtool.c +++ b/drivers/net/ethernet/sfc/ethtool.c | |||
@@ -591,7 +591,7 @@ static void efx_ethtool_get_ringparam(struct net_device *net_dev, | |||
591 | struct efx_nic *efx = netdev_priv(net_dev); | 591 | struct efx_nic *efx = netdev_priv(net_dev); |
592 | 592 | ||
593 | ring->rx_max_pending = EFX_MAX_DMAQ_SIZE; | 593 | ring->rx_max_pending = EFX_MAX_DMAQ_SIZE; |
594 | ring->tx_max_pending = EFX_MAX_DMAQ_SIZE; | 594 | ring->tx_max_pending = EFX_TXQ_MAX_ENT(efx); |
595 | ring->rx_pending = efx->rxq_entries; | 595 | ring->rx_pending = efx->rxq_entries; |
596 | ring->tx_pending = efx->txq_entries; | 596 | ring->tx_pending = efx->txq_entries; |
597 | } | 597 | } |
@@ -604,7 +604,7 @@ static int efx_ethtool_set_ringparam(struct net_device *net_dev, | |||
604 | 604 | ||
605 | if (ring->rx_mini_pending || ring->rx_jumbo_pending || | 605 | if (ring->rx_mini_pending || ring->rx_jumbo_pending || |
606 | ring->rx_pending > EFX_MAX_DMAQ_SIZE || | 606 | ring->rx_pending > EFX_MAX_DMAQ_SIZE || |
607 | ring->tx_pending > EFX_MAX_DMAQ_SIZE) | 607 | ring->tx_pending > EFX_TXQ_MAX_ENT(efx)) |
608 | return -EINVAL; | 608 | return -EINVAL; |
609 | 609 | ||
610 | if (ring->rx_pending < EFX_RXQ_MIN_ENT) { | 610 | if (ring->rx_pending < EFX_RXQ_MIN_ENT) { |