]> www.infradead.org Git - linux.git/commitdiff
RDMA/hns: Support fast path for link-down events dispatching
authorYuyu Li <liyuyu6@huawei.com>
Fri, 22 Nov 2024 10:53:08 +0000 (18:53 +0800)
committerLeon Romanovsky <leon@kernel.org>
Thu, 26 Dec 2024 04:39:11 +0000 (23:39 -0500)
hns3 NIC driver can directly notify the RoCE driver about link status
events bypassing the netdev notifier. This can provide more timely
event dispatching for ULPs.

Signed-off-by: Yuyu Li <liyuyu6@huawei.com>
Signed-off-by: Junxian Huang <huangjunxian6@hisilicon.com>
Signed-off-by: Leon Romanovsky <leon@kernel.org>
drivers/infiniband/hw/hns/hns_roce_hw_v2.c

index 697b17cca02e71af8156771f15f98f109f65e6e9..5c911d1def03af232cd3dbfcbf61edf49a98cb4e 100644 (file)
@@ -7178,9 +7178,22 @@ static int hns_roce_hw_v2_reset_notify(struct hnae3_handle *handle,
        return ret;
 }
 
+static void hns_roce_hw_v2_link_status_change(struct hnae3_handle *handle,
+                                             bool linkup)
+{
+       struct hns_roce_dev *hr_dev = (struct hns_roce_dev *)handle->priv;
+       struct net_device *netdev = handle->rinfo.netdev;
+
+       if (linkup || !hr_dev)
+               return;
+
+       ib_dispatch_port_state_event(&hr_dev->ib_dev, netdev);
+}
+
 static const struct hnae3_client_ops hns_roce_hw_v2_ops = {
        .init_instance = hns_roce_hw_v2_init_instance,
        .uninit_instance = hns_roce_hw_v2_uninit_instance,
+       .link_status_change = hns_roce_hw_v2_link_status_change,
        .reset_notify = hns_roce_hw_v2_reset_notify,
 };