ntb: Drop packets when qp link is down
authorDave Jiang <dave.jiang@intel.com>
Tue, 22 Aug 2023 16:04:51 +0000 (09:04 -0700)
committerJon Mason <jdmason@kudzu.us>
Tue, 22 Aug 2023 16:38:19 +0000 (12:38 -0400)
Currently when the transport receive packets after netdev has closed the
transport returns error and triggers tx errors to be incremented and
carrier to be stopped. There is no reason to return error if the device is
already closed. Drop the packet and return 0.

Fixes: e26a5843f7f5 ("NTB: Split ntb_hw_intel and ntb_transport drivers")
Reported-by: Yuan Y Lu <yuan.y.lu@intel.com>
Tested-by: Yuan Y Lu <yuan.y.lu@intel.com>
Reviewed-by: Logan Gunthorpe <logang@deltatee.com>
Signed-off-by: Dave Jiang <dave.jiang@intel.com>
Signed-off-by: Jon Mason <jdmason@kudzu.us>
drivers/ntb/ntb_transport.c

index 3e7a6a8a9c87b5f11a9768ea54eb09e45ef9d36c..7884ea9c7643fb1536be4109ad18e098f4200fad 100644 (file)
@@ -2283,9 +2283,13 @@ int ntb_transport_tx_enqueue(struct ntb_transport_qp *qp, void *cb, void *data,
        struct ntb_queue_entry *entry;
        int rc;
 
-       if (!qp || !qp->link_is_up || !len)
+       if (!qp || !len)
                return -EINVAL;
 
+       /* If the qp link is down already, just ignore. */
+       if (!qp->link_is_up)
+               return 0;
+
        entry = ntb_list_rm(&qp->ntb_tx_free_q_lock, &qp->tx_free_q);
        if (!entry) {
                qp->tx_err_no_buf++;