]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
dpaa2-eth: Remove preempt_disable() from seed_pool()
authorSebastian Andrzej Siewior <bigeasy@linutronix.de>
Fri, 7 Jun 2019 19:20:36 +0000 (21:20 +0200)
committerDavid S. Miller <davem@davemloft.net>
Mon, 10 Jun 2019 02:40:09 +0000 (19:40 -0700)
According to the comment, the preempt_disable() statement is required
due to synchronisation in napi_alloc_frag(). The awful truth is that
local_bh_disable() is required because otherwise the NAPI poll callback
can be invoked while the open function setup buffers. This isn't
unlikely since the dpaa2 provides multiple devices.

The usage of napi_alloc_frag() has been removed in commit

 27c874867c4e9 ("dpaa2-eth: Use a single page per Rx buffer")

which means that the comment is not accurate and the preempt_disable()
statement is not required.

Remove the outdated comment and the no longer required
preempt_disable().

Cc: Ioana Radulescu <ruxandra.radulescu@nxp.com>
Acked-by: Ioana Radulescu <ruxandra.radulescu@nxp.com>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c

index 753957ec72beaf6712d15ef57ca9fbad74201b81..27ecd06a63b7ad4efe9713d44171893c47444dfa 100644 (file)
@@ -997,13 +997,6 @@ static int seed_pool(struct dpaa2_eth_priv *priv, u16 bpid)
        int i, j;
        int new_count;
 
-       /* This is the lazy seeding of Rx buffer pools.
-        * dpaa2_add_bufs() is also used on the Rx hotpath and calls
-        * napi_alloc_frag(). The trouble with that is that it in turn ends up
-        * calling this_cpu_ptr(), which mandates execution in atomic context.
-        * Rather than splitting up the code, do a one-off preempt disable.
-        */
-       preempt_disable();
        for (j = 0; j < priv->num_channels; j++) {
                for (i = 0; i < DPAA2_ETH_NUM_BUFS;
                     i += DPAA2_ETH_BUFS_PER_CMD) {
@@ -1011,12 +1004,10 @@ static int seed_pool(struct dpaa2_eth_priv *priv, u16 bpid)
                        priv->channel[j]->buf_count += new_count;
 
                        if (new_count < DPAA2_ETH_BUFS_PER_CMD) {
-                               preempt_enable();
                                return -ENOMEM;
                        }
                }
        }
-       preempt_enable();
 
        return 0;
 }