staging: unisys: visornic: Reorder logic in visornic_enable_with_timeout()
authorDavid Binder <david.binder@unisys.com>
Mon, 9 Jan 2017 18:02:25 +0000 (13:02 -0500)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 10 Jan 2017 16:29:46 +0000 (17:29 +0100)
Moves the call to napi_enable() before the call to init_rcv_bufs(),
ensuring that messages are not put into the receive queue until the guest
is ready to receive interrupts.

Signed-off-by: David Binder <david.binder@unisys.com>
Signed-off-by: David Kershner <david.kershner@unisys.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/unisys/visornic/visornic_main.c

index 6c49288e52fa83e5bd7ae21fd739767b744dd729..cbc88100021a07b041ee819a8425e434b67ff0e5 100644 (file)
@@ -572,6 +572,8 @@ visornic_enable_with_timeout(struct net_device *netdev, const int timeout)
        unsigned long flags;
        int wait = 0;
 
+       napi_enable(&devdata->napi);
+
        /* NOTE: the other end automatically unposts the rcv buffers when it
         * gets a disable.
         */
@@ -595,7 +597,6 @@ visornic_enable_with_timeout(struct net_device *netdev, const int timeout)
        /* send enable and wait for ack -- don't hold lock when sending enable
         * because if the queue is full, insert might sleep.
         */
-       napi_enable(&devdata->napi);
        send_enbdis(netdev, 1, devdata);
 
        spin_lock_irqsave(&devdata->priv_lock, flags);