Commit 8531c808 authored by Christian Marangi's avatar Christian Marangi Committed by Jakub Kicinski
Browse files

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: default avatarChristian Marangi <ansuelsmth@gmail.com>
Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent 7028471e
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -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)));
}

+2 −2
Original line number Diff line number Diff line
@@ -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);
}

+13 −8
Original line number Diff line number Diff line
@@ -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];
+2 −2
Original line number Diff line number Diff line
@@ -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,
+145 −141

File changed.

Preview size limit exceeded, changes collapsed.

Loading