diff mbox series

[net-next,6/7] tg3: Use napi_alloc_frag()

Message ID 20190529221523.22399-7-bigeasy@linutronix.de
State Changes Requested
Delegated to: David Miller
Headers show
Series Avoid local_irq_save() and use napi_alloc_frag() where possible | expand

Commit Message

Sebastian Andrzej Siewior May 29, 2019, 10:15 p.m. UTC
tg3_alloc_rx_data() uses netdev_alloc_frag() for sbk allocation. All
callers of tg3_alloc_rx_data() either hold the tp->lock lock (which is
held with BH disabled) or run in NAPI context.

Use napi_alloc_frag() for skb allocations.

Cc: Siva Reddy Kallam <siva.kallam@broadcom.com>
Cc: Prashant Sreedharan <prashant@broadcom.com>
Cc: Michael Chan <mchan@broadcom.com>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
---
 drivers/net/ethernet/broadcom/tg3.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Sergei Shtylyov May 30, 2019, 8:51 a.m. UTC | #1
Hello!

On 30.05.2019 1:15, Sebastian Andrzej Siewior wrote:

> tg3_alloc_rx_data() uses netdev_alloc_frag() for sbk allocation. All
                                                    ^^^ skb?

> callers of tg3_alloc_rx_data() either hold the tp->lock lock (which is
                                                      ^^^^^^^^^
    Sort of tautological.

> held with BH disabled) or run in NAPI context.
> 
> Use napi_alloc_frag() for skb allocations.
> 
> Cc: Siva Reddy Kallam <siva.kallam@broadcom.com>
> Cc: Prashant Sreedharan <prashant@broadcom.com>
> Cc: Michael Chan <mchan@broadcom.com>
> Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
[...]

MBR, Sergei
diff mbox series

Patch

diff --git a/drivers/net/ethernet/broadcom/tg3.c b/drivers/net/ethernet/broadcom/tg3.c
index 6d1f9c822548e..4c404d2213f98 100644
--- a/drivers/net/ethernet/broadcom/tg3.c
+++ b/drivers/net/ethernet/broadcom/tg3.c
@@ -6710,7 +6710,7 @@  static int tg3_alloc_rx_data(struct tg3 *tp, struct tg3_rx_prodring_set *tpr,
 	skb_size = SKB_DATA_ALIGN(data_size + TG3_RX_OFFSET(tp)) +
 		   SKB_DATA_ALIGN(sizeof(struct skb_shared_info));
 	if (skb_size <= PAGE_SIZE) {
-		data = netdev_alloc_frag(skb_size);
+		data = napi_alloc_frag(skb_size);
 		*frag_size = skb_size;
 	} else {
 		data = kmalloc(skb_size, GFP_ATOMIC);