Skip to content

Commit 8878e46

Browse files
sukadevdavem330
authored andcommitted
ibmvnic: don't stop queue in xmit
If adapter's resetting bit is on, discard the packet but don't stop the transmit queue - instead leave that to the reset code. With this change, it is possible that we may get several calls to ibmvnic_xmit() that simply discard packets and return. But if we stop the queue here, we might end up doing so just after __ibmvnic_open() started the queues (during a hard/soft reset) and before the ->resetting bit was cleared. If that happens, there will be no one to restart queue and transmissions will be blocked indefinitely. This can cause a TIMEOUT reset and with auto priority failover enabled, an unnecessary FAILOVER reset to less favored backing device and then a FAILOVER back to the most favored backing device. If we hit the window repeatedly, we can get stuck in a loop of TIMEOUT, FAILOVER, FAILOVER resets leaving the adapter unusable for extended periods of time. Fixes: 7f5b030 ("ibmvnic: Free skb's in cases of failure in transmit") Reported-by: Abdul Haleem <abdhalee@in.ibm.com> Reported-by: Vaishnavi Bhat <vaish123@in.ibm.com> Signed-off-by: Sukadev Bhattiprolu <sukadev@linux.ibm.com> Reviewed-by: Dany Madden <drt@linux.ibm.com> Signed-off-by: David S. Miller <davem@davemloft.net>
1 parent 7be49d2 commit 8878e46

1 file changed

Lines changed: 0 additions & 2 deletions

File tree

drivers/net/ethernet/ibm/ibmvnic.c

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1724,8 +1724,6 @@ static netdev_tx_t ibmvnic_xmit(struct sk_buff *skb, struct net_device *netdev)
17241724
ind_bufp = &tx_scrq->ind_buf;
17251725

17261726
if (test_bit(0, &adapter->resetting)) {
1727-
if (!netif_subqueue_stopped(netdev, skb))
1728-
netif_stop_subqueue(netdev, queue_num);
17291727
dev_kfree_skb_any(skb);
17301728

17311729
tx_send_failed++;

0 commit comments

Comments
 (0)