From 6897dbe67c0d7d7554926128a17c65afa1ec0001 Mon Sep 17 00:00:00 2001 From: Serguei Smirnov Date: Thu, 26 Oct 2023 11:15:28 -0700 Subject: [PATCH] LU-17230 socklnd: treat UNKNOWN netif operstate as UP "UNKNOWN" (IF_OPER_UNKNOWN) operational state doesn't necessarily mean that the interface can't be used and may be the result of particular network driver not providing UP/DOWN states, so it may be incorrect for socklnd to initiate setting of a "fatal error" flag on a NI using an interface in "UNKNOWN" operstate. Test-Parameters: trivial testlist=sanity-lnet Signed-off-by: Serguei Smirnov Change-Id: I39dfa01f3758809440d50cf8b6b11555889ef366 Reviewed-on: https://review.whamcloud.com/c/fs/lustre-release/+/52842 Tested-by: jenkins Tested-by: Maloo Reviewed-by: Chris Horn Reviewed-by: Oleg Drokin Reviewed-by: Cyril Bordage --- lnet/klnds/socklnd/socklnd.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/lnet/klnds/socklnd/socklnd.c b/lnet/klnds/socklnd/socklnd.c index 23a23ee..10cf56c 100644 --- a/lnet/klnds/socklnd/socklnd.c +++ b/lnet/klnds/socklnd/socklnd.c @@ -111,7 +111,8 @@ static int ksocknal_ip2index(struct sockaddr *addr, struct lnet_ni *ni, if ((ret == -1) || ((dev->reg_state == NETREG_UNREGISTERING) || - (dev->operstate != IF_OPER_UP)) || + ((dev->operstate != IF_OPER_UP) && + (dev->operstate != IF_OPER_UNKNOWN))) || (lnet_get_link_status(dev) == 0)) *dev_status = 0; @@ -1961,7 +1962,7 @@ ksocknal_handle_link_state_change(struct net_device *dev, struct ksock_net *net; struct ksock_net *cnxt; int ifindex; - unsigned char link_down = !(operstate == IF_OPER_UP); + unsigned char link_down; struct in_device *in_dev; bool found_ip = false; struct ksock_interface *ksi = NULL; @@ -1971,6 +1972,7 @@ ksocknal_handle_link_state_change(struct net_device *dev, int state; DECLARE_CONST_IN_IFADDR(ifa); + link_down = !((operstate == IF_OPER_UP) || (operstate == IF_OPER_UNKNOWN)); ifindex = dev->ifindex; if (!ksocknal_data.ksnd_nnets) -- 1.8.3.1