svn commit: r324472 - in stable/11/sys: net sys

Sepherosa Ziehau sephe at FreeBSD.org
Tue Oct 10 05:25:47 UTC 2017


Author: sephe
Date: Tue Oct 10 05:25:46 2017
New Revision: 324472
URL: https://svnweb.freebsd.org/changeset/base/324472

Log:
  MFC 323170
  
      if: Add ioctls to get RSS key and hash type/function.
  
      It will be needed by hn(4) to configure its RSS key and hash
      type/function in the transparent VF mode in order to match VF's
      RSS settings. The description of the transparent VF mode and
      the RSS hash value issue are here:
      https://svnweb.freebsd.org/base?view=revision&revision=322299
      https://svnweb.freebsd.org/base?view=revision&revision=322485
  
      These are generic enough to promise two independent IOCs instead
      of abusing SIOCGDRVSPEC.
  
      Setting RSS key and hash type/function is a different story,
      which probably requires more discussion.
  
      Comment about UDP_{IPV4,IPV6,IPV6_EX} were only in the patch
      in the review request; these hash types are standardized now.
  
      Reviewed by:    gallatin
      Sponsored by:   Microsoft
      Differential Revision:  https://reviews.freebsd.org/D12174

Modified:
  stable/11/sys/net/if.c
  stable/11/sys/net/if.h
  stable/11/sys/sys/sockio.h
Directory Properties:
  stable/11/   (props changed)

Modified: stable/11/sys/net/if.c
==============================================================================
--- stable/11/sys/net/if.c	Tue Oct 10 04:53:26 2017	(r324471)
+++ stable/11/sys/net/if.c	Tue Oct 10 05:25:46 2017	(r324472)
@@ -2661,6 +2661,8 @@ ifhwioctl(u_long cmd, struct ifnet *ifp, caddr_t data,
 	case SIOCGIFMEDIA:
 	case SIOCGIFXMEDIA:
 	case SIOCGIFGENERIC:
+	case SIOCGIFRSSKEY:
+	case SIOCGIFRSSHASH:
 		if (ifp->if_ioctl == NULL)
 			return (EOPNOTSUPP);
 		error = (*ifp->if_ioctl)(ifp, cmd, data);

Modified: stable/11/sys/net/if.h
==============================================================================
--- stable/11/sys/net/if.h	Tue Oct 10 04:53:26 2017	(r324471)
+++ stable/11/sys/net/if.h	Tue Oct 10 05:25:46 2017	(r324472)
@@ -525,6 +525,42 @@ struct ifi2creq {
 	uint8_t data[8];	/* read buffer */
 }; 
 
+/*
+ * RSS hash.
+ */
+
+#define	RSS_FUNC_NONE		0		/* RSS disabled */
+#define	RSS_FUNC_PRIVATE	1		/* non-standard */
+#define	RSS_FUNC_TOEPLITZ	2
+
+#define	RSS_TYPE_IPV4		0x00000001
+#define	RSS_TYPE_TCP_IPV4	0x00000002
+#define	RSS_TYPE_IPV6		0x00000004
+#define	RSS_TYPE_IPV6_EX	0x00000008
+#define	RSS_TYPE_TCP_IPV6	0x00000010
+#define	RSS_TYPE_TCP_IPV6_EX	0x00000020
+#define	RSS_TYPE_UDP_IPV4	0x00000040
+#define	RSS_TYPE_UDP_IPV6	0x00000080
+#define	RSS_TYPE_UDP_IPV6_EX	0x00000100
+
+#define	RSS_KEYLEN		128
+
+struct ifrsskey {
+	char		ifrk_name[IFNAMSIZ];	/* if name, e.g. "en0" */
+	uint8_t		ifrk_func;		/* RSS_FUNC_ */
+	uint8_t		ifrk_spare0;
+	uint16_t	ifrk_keylen;
+	uint8_t		ifrk_key[RSS_KEYLEN];
+};
+
+struct ifrsshash {
+	char		ifrh_name[IFNAMSIZ];	/* if name, e.g. "en0" */
+	uint8_t		ifrh_func;		/* RSS_FUNC_ */
+	uint8_t		ifrh_spare0;
+	uint16_t	ifrh_spare1;
+	uint32_t	ifrh_types;		/* RSS_TYPE_ */
+};
+
 #endif /* __BSD_VISIBLE */
 
 #ifdef _KERNEL

Modified: stable/11/sys/sys/sockio.h
==============================================================================
--- stable/11/sys/sys/sockio.h	Tue Oct 10 04:53:26 2017	(r324471)
+++ stable/11/sys/sys/sockio.h	Tue Oct 10 05:25:46 2017	(r324472)
@@ -134,4 +134,8 @@
 #define	SIOCGIFGMEMB	_IOWR('i', 138, struct ifgroupreq) /* get members */
 #define	SIOCGIFXMEDIA	_IOWR('i', 139, struct ifmediareq) /* get net xmedia */
 
+#define	SIOCGIFRSSKEY	_IOWR('i', 150, struct ifrsskey)/* get RSS key */
+#define	SIOCGIFRSSHASH	_IOWR('i', 151, struct ifrsshash)/* get the current RSS
+							type/func settings */
+
 #endif /* !_SYS_SOCKIO_H_ */


More information about the svn-src-all mailing list