ibmvnic: Check for driver reset first in ibmvnic_xmit
authorNathan Fontenot <nfont@linux.vnet.ibm.com>
Wed, 3 May 2017 18:05:08 +0000 (14:05 -0400)
committerDavid S. Miller <davem@davemloft.net>
Wed, 3 May 2017 15:33:05 +0000 (11:33 -0400)
Move the check for the driver resetting to the first thing
in ibmvnic_xmit().

Signed-off-by: Nathan Fontenot <nfont@linux.vnet.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/ibm/ibmvnic.c

index a312bc1fee6d83684b2006d2f08b61b233c03233..f1ee37716ad7d2086ee7a0b12fcbd9aa99bf49f9 100644 (file)
@@ -985,12 +985,6 @@ static int ibmvnic_xmit(struct sk_buff *skb, struct net_device *netdev)
        int index = 0;
        int ret = 0;
 
-       tx_pool = &adapter->tx_pool[queue_num];
-       tx_scrq = adapter->tx_scrq[queue_num];
-       txq = netdev_get_tx_queue(netdev, skb_get_queue_mapping(skb));
-       handle_array = (u64 *)((u8 *)(adapter->login_rsp_buf) +
-                                  be32_to_cpu(adapter->login_rsp_buf->
-                                              off_txsubm_subcrqs));
        if (adapter->resetting) {
                if (!netif_subqueue_stopped(netdev, skb))
                        netif_stop_subqueue(netdev, queue_num);
@@ -1002,6 +996,12 @@ static int ibmvnic_xmit(struct sk_buff *skb, struct net_device *netdev)
                goto out;
        }
 
+       tx_pool = &adapter->tx_pool[queue_num];
+       tx_scrq = adapter->tx_scrq[queue_num];
+       txq = netdev_get_tx_queue(netdev, skb_get_queue_mapping(skb));
+       handle_array = (u64 *)((u8 *)(adapter->login_rsp_buf) +
+               be32_to_cpu(adapter->login_rsp_buf->off_txsubm_subcrqs));
+
        index = tx_pool->free_map[tx_pool->consumer_index];
        offset = index * adapter->req_mtu;
        dst = tx_pool->long_term_buff.buff + offset;