From: Serguei Smirnov Date: Thu, 26 Oct 2023 18:15:28 +0000 (-0700) Subject: LU-17230 socklnd: treat UNKNOWN netif operstate as UP X-Git-Tag: 2.15.60~80 X-Git-Url: https://git.whamcloud.com/gitweb?a=commitdiff_plain;h=6897dbe67c0d7d7554926128a17c65afa1ec0001;p=fs%2Flustre-release.git 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 --- 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)