aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/net/ethernet/sfc/efx.h3
-rw-r--r--drivers/net/ethernet/sfc/ethtool.c4
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) {