[1/1,v2] net: socionext: replace napi_alloc_frag with the netdev variant on init

Message ID 1555999301-20818-1-git-send-email-ilias.apalodimas@linaro.org
State New
Headers show
Series
  • [1/1,v2] net: socionext: replace napi_alloc_frag with the netdev variant on init
Related show

Commit Message

Ilias Apalodimas April 23, 2019, 6:01 a.m.
The netdev variant is usable on any context since it disables interrupts.
The napi variant of the call should only be used within softirq context.
Replace napi_alloc_frag on driver init with the correct netdev_alloc_frag
call

Changes since v1:
- Adjusted commit message

Acked-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>

Acked-by: Jassi Brar <jaswinder.singh@linaro.org>

Fixes: 4acb20b46214 ("net: socionext: different approach on DMA")
Signed-off-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>

---
 drivers/net/ethernet/socionext/netsec.c | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

-- 
2.7.4

Comments

David Miller April 24, 2019, 2:40 a.m. | #1
From: Ilias Apalodimas <ilias.apalodimas@linaro.org>

Date: Tue, 23 Apr 2019 09:01:41 +0300

> The netdev variant is usable on any context since it disables interrupts.

> The napi variant of the call should only be used within softirq context.

> Replace napi_alloc_frag on driver init with the correct netdev_alloc_frag

> call

> 

> Changes since v1:

> - Adjusted commit message

> 

> Acked-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>

> Acked-by: Jassi Brar <jaswinder.singh@linaro.org>

> Fixes: 4acb20b46214 ("net: socionext: different approach on DMA")

> Signed-off-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>


Applied and queued up for -stable, thank you.

Patch

diff --git a/drivers/net/ethernet/socionext/netsec.c b/drivers/net/ethernet/socionext/netsec.c
index a18149720aa2..cba5881b2746 100644
--- a/drivers/net/ethernet/socionext/netsec.c
+++ b/drivers/net/ethernet/socionext/netsec.c
@@ -673,7 +673,8 @@  static void netsec_process_tx(struct netsec_priv *priv)
 }
 
 static void *netsec_alloc_rx_data(struct netsec_priv *priv,
-				  dma_addr_t *dma_handle, u16 *desc_len)
+				  dma_addr_t *dma_handle, u16 *desc_len,
+				  bool napi)
 {
 	size_t total_len = SKB_DATA_ALIGN(sizeof(struct skb_shared_info));
 	size_t payload_len = NETSEC_RX_BUF_SZ;
@@ -682,7 +683,7 @@  static void *netsec_alloc_rx_data(struct netsec_priv *priv,
 
 	total_len += SKB_DATA_ALIGN(payload_len + NETSEC_SKB_PAD);
 
-	buf = napi_alloc_frag(total_len);
+	buf = napi ? napi_alloc_frag(total_len) : netdev_alloc_frag(total_len);
 	if (!buf)
 		return NULL;
 
@@ -765,7 +766,8 @@  static int netsec_process_rx(struct netsec_priv *priv, int budget)
 		/* allocate a fresh buffer and map it to the hardware.
 		 * This will eventually replace the old buffer in the hardware
 		 */
-		buf_addr = netsec_alloc_rx_data(priv, &dma_handle, &desc_len);
+		buf_addr = netsec_alloc_rx_data(priv, &dma_handle, &desc_len,
+						true);
 		if (unlikely(!buf_addr))
 			break;
 
@@ -1069,7 +1071,8 @@  static int netsec_setup_rx_dring(struct netsec_priv *priv)
 		void *buf;
 		u16 len;
 
-		buf = netsec_alloc_rx_data(priv, &dma_handle, &len);
+		buf = netsec_alloc_rx_data(priv, &dma_handle, &len,
+					   false);
 		if (!buf) {
 			netsec_uninit_pkt_dring(priv, NETSEC_RING_RX);
 			goto err_out;