aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/ibm/ibmvnic.c
diff options
context:
space:
mode:
authorThomas Falcon <tlfalcon@linux.vnet.ibm.com>2017-05-26 10:30:42 -0400
committerDavid S. Miller <davem@davemloft.net>2017-05-26 15:32:45 -0400
commitb8c80b8413eec7ae154cdad692a7fd1cb32d0370 (patch)
tree398178ab51f81d8ea65808d8081e6c4c1b43d846 /drivers/net/ethernet/ibm/ibmvnic.c
parent8cb31cfc9448e2ce0bda899eb15f74bc0a875d90 (diff)
ibmvnic: Halt TX and report carrier off on H_CLOSED return code
This patch disables transmissions and reports carrier off if xmit function returns that the hardware TX queue is closed. The driver can then await a signal from firmware to determine the correct reset method. Signed-off-by: Thomas Falcon <tlfalcon@linux.vnet.ibm.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/ibm/ibmvnic.c')
-rw-r--r--drivers/net/ethernet/ibm/ibmvnic.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/drivers/net/ethernet/ibm/ibmvnic.c b/drivers/net/ethernet/ibm/ibmvnic.c
index def867aaa422..1c3f1edea9db 100644
--- a/drivers/net/ethernet/ibm/ibmvnic.c
+++ b/drivers/net/ethernet/ibm/ibmvnic.c
@@ -1111,8 +1111,14 @@ static int ibmvnic_xmit(struct sk_buff *skb, struct net_device *netdev)
1111 dev_kfree_skb_any(skb); 1111 dev_kfree_skb_any(skb);
1112 tx_buff->skb = NULL; 1112 tx_buff->skb = NULL;
1113 1113
1114 if (lpar_rc == H_CLOSED) 1114 if (lpar_rc == H_CLOSED) {
1115 netif_stop_subqueue(netdev, queue_num); 1115 /* Disable TX and report carrier off if queue is closed.
1116 * Firmware guarantees that a signal will be sent to the
1117 * driver, triggering a reset or some other action.
1118 */
1119 netif_tx_stop_all_queues(netdev);
1120 netif_carrier_off(netdev);
1121 }
1116 1122
1117 tx_send_failed++; 1123 tx_send_failed++;
1118 tx_dropped++; 1124 tx_dropped++;