Skip to content

Commit

Permalink
net: socionext: replace napi_alloc_frag with the netdev variant on init
Browse files Browse the repository at this point in the history
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: 4acb20b ("net: socionext: different approach on DMA")
Signed-off-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Ilias Apalodimas authored and David S. Miller committed Apr 24, 2019
1 parent 66c0317 commit ffbf987
Showing 1 changed file with 7 additions and 4 deletions.
11 changes: 7 additions & 4 deletions drivers/net/ethernet/socionext/netsec.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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;

Expand Down Expand Up @@ -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;

Expand Down Expand Up @@ -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;
Expand Down

0 comments on commit ffbf987

Please sign in to comment.