svn commit: r352458 - in head/sys: net sys

Konstantin Belousov kib at FreeBSD.org
Tue Sep 17 18:49:14 UTC 2019


Author: kib
Date: Tue Sep 17 18:49:13 2019
New Revision: 352458
URL: https://svnweb.freebsd.org/changeset/base/352458

Log:
  Add SIOCGIFDOWNREASON.
  
  The ioctl(2) is intended to provide more details about the cause of
  the down for the link.
  
  Eventually we might define a comprehensive list of codes for the
  situations.  But interface also allows the driver to provide free-form
  null-terminated ASCII string to provide arbitrary non-formalized
  information.  Sample implementation exists for mlx5(4), where the
  string is fetched from firmware controlling the port.
  
  Reviewed by:	hselasky, rrs
  Sponsored by:	Mellanox Technologies
  MFC after:	1 week
  Differential revision:	https://reviews.freebsd.org/D21527

Modified:
  head/sys/net/if.c
  head/sys/net/if.h
  head/sys/sys/sockio.h

Modified: head/sys/net/if.c
==============================================================================
--- head/sys/net/if.c	Tue Sep 17 18:41:39 2019	(r352457)
+++ head/sys/net/if.c	Tue Sep 17 18:49:13 2019	(r352458)
@@ -2891,6 +2891,7 @@ ifhwioctl(u_long cmd, struct ifnet *ifp, caddr_t data,
 	case SIOCGIFGENERIC:
 	case SIOCGIFRSSKEY:
 	case SIOCGIFRSSHASH:
+	case SIOCGIFDOWNREASON:
 		if (ifp->if_ioctl == NULL)
 			return (EOPNOTSUPP);
 		error = (*ifp->if_ioctl)(ifp, cmd, data);

Modified: head/sys/net/if.h
==============================================================================
--- head/sys/net/if.h	Tue Sep 17 18:41:39 2019	(r352457)
+++ head/sys/net/if.h	Tue Sep 17 18:49:13 2019	(r352458)
@@ -585,6 +585,16 @@ struct ifrsshash {
 
 #define	IFNET_PCP_NONE	0xff	/* PCP disabled */
 
+#define	IFDR_MSG_SIZE		64
+#define	IFDR_REASON_MSG		1
+#define	IFDR_REASON_VENDOR	2
+struct ifdownreason {
+	char		ifdr_name[IFNAMSIZ];
+	uint32_t	ifdr_reason;
+	uint32_t	ifdr_vendor;
+	char		ifdr_msg[IFDR_MSG_SIZE];
+};
+
 #endif /* __BSD_VISIBLE */
 
 #ifdef _KERNEL

Modified: head/sys/sys/sockio.h
==============================================================================
--- head/sys/sys/sockio.h	Tue Sep 17 18:41:39 2019	(r352457)
+++ head/sys/sys/sockio.h	Tue Sep 17 18:49:13 2019	(r352458)
@@ -143,4 +143,6 @@
 #define	SIOCGLANPCP	_IOWR('i', 152, struct ifreq)	/* Get (V)LAN PCP */
 #define	SIOCSLANPCP	 _IOW('i', 153, struct ifreq)	/* Set (V)LAN PCP */
 
+#define	SIOCGIFDOWNREASON	_IOWR('i', 154, struct ifdownreason)
+
 #endif /* !_SYS_SOCKIO_H_ */


More information about the svn-src-head mailing list