usNIC netdev notifier handler does not correctly handle the
NETDEV_CHANGE event.  This patch adds handling for NETDEV_CHANGE.

Signed-off-by: Upinder Malhi <[email protected]>
---
 drivers/infiniband/hw/usnic/usnic_ib_main.c | 15 ++++++---------
 1 file changed, 6 insertions(+), 9 deletions(-)

diff --git a/drivers/infiniband/hw/usnic/usnic_ib_main.c 
b/drivers/infiniband/hw/usnic/usnic_ib_main.c
index 1cf22d5..ae4e544 100644
--- a/drivers/infiniband/hw/usnic/usnic_ib_main.c
+++ b/drivers/infiniband/hw/usnic/usnic_ib_main.c
@@ -148,20 +148,16 @@ static void usnic_ib_handle_usdev_event(struct 
usnic_ib_dev *us_ibdev,
                ib_dispatch_event(&ib_event);
                break;
        case NETDEV_UP:
-               if (!us_ibdev->link_up) {
+       case NETDEV_DOWN:
+       case NETDEV_CHANGE:
+               if (!us_ibdev->link_up && netif_carrier_ok(netdev)) {
                        us_ibdev->link_up = true;
                        usnic_info("Link UP on %s\n", us_ibdev->ib_dev.name);
                        ib_event.event = IB_EVENT_PORT_ACTIVE;
                        ib_event.device = &us_ibdev->ib_dev;
                        ib_event.element.port_num = 1;
                        ib_dispatch_event(&ib_event);
-               } else {
-                       usnic_dbg("Ignorning Link UP on %s\n",
-                                       us_ibdev->ib_dev.name);
-               }
-               break;
-       case NETDEV_DOWN:
-               if (us_ibdev->link_up) {
+               } else if (us_ibdev->link_up && !netif_carrier_ok(netdev)) {
                        us_ibdev->link_up = false;
                        usnic_info("Link DOWN on %s\n", us_ibdev->ib_dev.name);
                        usnic_ib_qp_grp_modify_active_to_err(us_ibdev);
@@ -170,7 +166,8 @@ static void usnic_ib_handle_usdev_event(struct usnic_ib_dev 
*us_ibdev,
                        ib_event.element.port_num = 1;
                        ib_dispatch_event(&ib_event);
                } else {
-                       usnic_dbg("Ignorning Link DOWN on %s\n",
+                       usnic_dbg("Ignorning %s on %s\n",
+                                       usnic_ib_netdev_event_to_string(event),
                                        us_ibdev->ib_dev.name);
                }
                break;
-- 
1.8.1

--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to