Commit 02293dd4 authored by Claudiu Manoil's avatar Claudiu Manoil Committed by David S. Miller

enetc: Refine buffer descriptor ring sizes

It's time to differentiate between Rx and Tx ring sizes.
Not only Tx rings are processed differently than Rx rings,
but their default number also differs - i.e. up to 8 Tx rings
per device (8 traffic classes) vs. 2 Rx rings (one per CPU).
So let's set Tx rings sizes to half the size of the Rx rings
for now, to be conservative.
The default ring sizes were decreased as well (to the next
lower power of 2), to reduce the memory footprint, buffering
etc., since the measurements I've made so far show that the
rings are very unlikely to get full.
This change also anticipates the introduction of the
dynamic interrupt moderation (dim) algorithm which operates
on maximum packet thresholds of 256 packets for Rx and 128
packets for Tx.
Signed-off-by: default avatarClaudiu Manoil <claudiu.manoil@nxp.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent c17e3178
...@@ -1064,8 +1064,8 @@ void enetc_init_si_rings_params(struct enetc_ndev_priv *priv) ...@@ -1064,8 +1064,8 @@ void enetc_init_si_rings_params(struct enetc_ndev_priv *priv)
struct enetc_si *si = priv->si; struct enetc_si *si = priv->si;
int cpus = num_online_cpus(); int cpus = num_online_cpus();
priv->tx_bd_count = ENETC_BDR_DEFAULT_SIZE; priv->tx_bd_count = ENETC_TX_RING_DEFAULT_SIZE;
priv->rx_bd_count = ENETC_BDR_DEFAULT_SIZE; priv->rx_bd_count = ENETC_RX_RING_DEFAULT_SIZE;
/* Enable all available TX rings in order to configure as many /* Enable all available TX rings in order to configure as many
* priorities as possible, when needed. * priorities as possible, when needed.
......
...@@ -44,8 +44,9 @@ struct enetc_ring_stats { ...@@ -44,8 +44,9 @@ struct enetc_ring_stats {
unsigned int rx_alloc_errs; unsigned int rx_alloc_errs;
}; };
#define ENETC_BDR_DEFAULT_SIZE 1024 #define ENETC_RX_RING_DEFAULT_SIZE 512
#define ENETC_DEFAULT_TX_WORK 256 #define ENETC_TX_RING_DEFAULT_SIZE 256
#define ENETC_DEFAULT_TX_WORK (ENETC_TX_RING_DEFAULT_SIZE / 2)
struct enetc_bdr { struct enetc_bdr {
struct device *dev; /* for DMA mapping */ struct device *dev; /* for DMA mapping */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment