net: ethernet: stmicro: stmmac: move dma conf to dedicated struct
Move dma buf conf to dedicated struct. This in preparation for code rework that will permit to allocate separate dma_conf without affecting the priv struct. Signed-off-by: Christian Marangi <ansuelsmth@gmail.com> Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
7028471edb
commit
8531c80800
|
@ -46,7 +46,7 @@ static int jumbo_frm(void *p, struct sk_buff *skb, int csum)
|
|||
|
||||
while (len != 0) {
|
||||
tx_q->tx_skbuff[entry] = NULL;
|
||||
entry = STMMAC_GET_ENTRY(entry, priv->dma_tx_size);
|
||||
entry = STMMAC_GET_ENTRY(entry, priv->dma_conf.dma_tx_size);
|
||||
desc = tx_q->dma_tx + entry;
|
||||
|
||||
if (len > bmax) {
|
||||
|
@ -137,7 +137,7 @@ static void refill_desc3(void *priv_ptr, struct dma_desc *p)
|
|||
*/
|
||||
p->des3 = cpu_to_le32((unsigned int)(rx_q->dma_rx_phy +
|
||||
(((rx_q->dirty_rx) + 1) %
|
||||
priv->dma_rx_size) *
|
||||
priv->dma_conf.dma_rx_size) *
|
||||
sizeof(struct dma_desc)));
|
||||
}
|
||||
|
||||
|
@ -155,7 +155,7 @@ static void clean_desc3(void *priv_ptr, struct dma_desc *p)
|
|||
*/
|
||||
p->des3 = cpu_to_le32((unsigned int)((tx_q->dma_tx_phy +
|
||||
((tx_q->dirty_tx + 1) %
|
||||
priv->dma_tx_size))
|
||||
priv->dma_conf.dma_tx_size))
|
||||
* sizeof(struct dma_desc)));
|
||||
}
|
||||
|
||||
|
|
|
@ -51,7 +51,7 @@ static int jumbo_frm(void *p, struct sk_buff *skb, int csum)
|
|||
stmmac_prepare_tx_desc(priv, desc, 1, bmax, csum,
|
||||
STMMAC_RING_MODE, 0, false, skb->len);
|
||||
tx_q->tx_skbuff[entry] = NULL;
|
||||
entry = STMMAC_GET_ENTRY(entry, priv->dma_tx_size);
|
||||
entry = STMMAC_GET_ENTRY(entry, priv->dma_conf.dma_tx_size);
|
||||
|
||||
if (priv->extend_desc)
|
||||
desc = (struct dma_desc *)(tx_q->dma_etx + entry);
|
||||
|
@ -107,7 +107,7 @@ static void refill_desc3(void *priv_ptr, struct dma_desc *p)
|
|||
struct stmmac_priv *priv = rx_q->priv_data;
|
||||
|
||||
/* Fill DES3 in case of RING mode */
|
||||
if (priv->dma_buf_sz == BUF_SIZE_16KiB)
|
||||
if (priv->dma_conf.dma_buf_sz == BUF_SIZE_16KiB)
|
||||
p->des3 = cpu_to_le32(le32_to_cpu(p->des2) + BUF_SIZE_8KiB);
|
||||
}
|
||||
|
||||
|
|
|
@ -188,6 +188,18 @@ struct stmmac_rfs_entry {
|
|||
int tc;
|
||||
};
|
||||
|
||||
struct stmmac_dma_conf {
|
||||
unsigned int dma_buf_sz;
|
||||
|
||||
/* RX Queue */
|
||||
struct stmmac_rx_queue rx_queue[MTL_MAX_RX_QUEUES];
|
||||
unsigned int dma_rx_size;
|
||||
|
||||
/* TX Queue */
|
||||
struct stmmac_tx_queue tx_queue[MTL_MAX_TX_QUEUES];
|
||||
unsigned int dma_tx_size;
|
||||
};
|
||||
|
||||
struct stmmac_priv {
|
||||
/* Frequently used values are kept adjacent for cache effect */
|
||||
u32 tx_coal_frames[MTL_MAX_TX_QUEUES];
|
||||
|
@ -201,7 +213,6 @@ struct stmmac_priv {
|
|||
int sph_cap;
|
||||
u32 sarc_type;
|
||||
|
||||
unsigned int dma_buf_sz;
|
||||
unsigned int rx_copybreak;
|
||||
u32 rx_riwt[MTL_MAX_TX_QUEUES];
|
||||
int hwts_rx_en;
|
||||
|
@ -213,13 +224,7 @@ struct stmmac_priv {
|
|||
int (*hwif_quirks)(struct stmmac_priv *priv);
|
||||
struct mutex lock;
|
||||
|
||||
/* RX Queue */
|
||||
struct stmmac_rx_queue rx_queue[MTL_MAX_RX_QUEUES];
|
||||
unsigned int dma_rx_size;
|
||||
|
||||
/* TX Queue */
|
||||
struct stmmac_tx_queue tx_queue[MTL_MAX_TX_QUEUES];
|
||||
unsigned int dma_tx_size;
|
||||
struct stmmac_dma_conf dma_conf;
|
||||
|
||||
/* Generic channel for NAPI */
|
||||
struct stmmac_channel channel[STMMAC_CH_MAX];
|
||||
|
|
|
@ -485,8 +485,8 @@ static void stmmac_get_ringparam(struct net_device *netdev,
|
|||
|
||||
ring->rx_max_pending = DMA_MAX_RX_SIZE;
|
||||
ring->tx_max_pending = DMA_MAX_TX_SIZE;
|
||||
ring->rx_pending = priv->dma_rx_size;
|
||||
ring->tx_pending = priv->dma_tx_size;
|
||||
ring->rx_pending = priv->dma_conf.dma_rx_size;
|
||||
ring->tx_pending = priv->dma_conf.dma_tx_size;
|
||||
}
|
||||
|
||||
static int stmmac_set_ringparam(struct net_device *netdev,
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -795,8 +795,8 @@ static int stmmac_test_flowctrl(struct stmmac_priv *priv)
|
|||
struct stmmac_channel *ch = &priv->channel[i];
|
||||
u32 tail;
|
||||
|
||||
tail = priv->rx_queue[i].dma_rx_phy +
|
||||
(priv->dma_rx_size * sizeof(struct dma_desc));
|
||||
tail = priv->dma_conf.rx_queue[i].dma_rx_phy +
|
||||
(priv->dma_conf.dma_rx_size * sizeof(struct dma_desc));
|
||||
|
||||
stmmac_set_rx_tail_ptr(priv, priv->ioaddr, tail, i);
|
||||
stmmac_start_rx(priv, priv->ioaddr, i);
|
||||
|
@ -1680,7 +1680,7 @@ cleanup:
|
|||
static int __stmmac_test_jumbo(struct stmmac_priv *priv, u16 queue)
|
||||
{
|
||||
struct stmmac_packet_attrs attr = { };
|
||||
int size = priv->dma_buf_sz;
|
||||
int size = priv->dma_conf.dma_buf_sz;
|
||||
|
||||
attr.dst = priv->dev->dev_addr;
|
||||
attr.max_size = size - ETH_FCS_LEN;
|
||||
|
@ -1763,7 +1763,7 @@ static int stmmac_test_tbs(struct stmmac_priv *priv)
|
|||
|
||||
/* Find first TBS enabled Queue, if any */
|
||||
for (i = 0; i < priv->plat->tx_queues_to_use; i++)
|
||||
if (priv->tx_queue[i].tbs & STMMAC_TBS_AVAIL)
|
||||
if (priv->dma_conf.tx_queue[i].tbs & STMMAC_TBS_AVAIL)
|
||||
break;
|
||||
|
||||
if (i >= priv->plat->tx_queues_to_use)
|
||||
|
|
|
@ -1091,13 +1091,13 @@ static int tc_setup_etf(struct stmmac_priv *priv,
|
|||
return -EOPNOTSUPP;
|
||||
if (qopt->queue >= priv->plat->tx_queues_to_use)
|
||||
return -EINVAL;
|
||||
if (!(priv->tx_queue[qopt->queue].tbs & STMMAC_TBS_AVAIL))
|
||||
if (!(priv->dma_conf.tx_queue[qopt->queue].tbs & STMMAC_TBS_AVAIL))
|
||||
return -EINVAL;
|
||||
|
||||
if (qopt->enable)
|
||||
priv->tx_queue[qopt->queue].tbs |= STMMAC_TBS_EN;
|
||||
priv->dma_conf.tx_queue[qopt->queue].tbs |= STMMAC_TBS_EN;
|
||||
else
|
||||
priv->tx_queue[qopt->queue].tbs &= ~STMMAC_TBS_EN;
|
||||
priv->dma_conf.tx_queue[qopt->queue].tbs &= ~STMMAC_TBS_EN;
|
||||
|
||||
netdev_info(priv->dev, "%s ETF for Queue %d\n",
|
||||
qopt->enable ? "enabled" : "disabled", qopt->queue);
|
||||
|
|
Loading…
Reference in New Issue