Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 10 Oct 2017 02:35:05 +0000 (UTC)
From:      Sepherosa Ziehau <sephe@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org
Subject:   svn commit: r324462 - in stable/10/sys: net sys
Message-ID:  <201710100235.v9A2Z5xK019795@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: sephe
Date: Tue Oct 10 02:35:04 2017
New Revision: 324462
URL: https://svnweb.freebsd.org/changeset/base/324462

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/10/sys/net/if.c
  stable/10/sys/net/if.h
  stable/10/sys/sys/sockio.h
Directory Properties:
  stable/10/   (props changed)

Modified: stable/10/sys/net/if.c
==============================================================================
--- stable/10/sys/net/if.c	Tue Oct 10 02:22:34 2017	(r324461)
+++ stable/10/sys/net/if.c	Tue Oct 10 02:35:04 2017	(r324462)
@@ -2632,6 +2632,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/10/sys/net/if.h
==============================================================================
--- stable/10/sys/net/if.h	Tue Oct 10 02:22:34 2017	(r324461)
+++ stable/10/sys/net/if.h	Tue Oct 10 02:35:04 2017	(r324462)
@@ -534,6 +534,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/10/sys/sys/sockio.h
==============================================================================
--- stable/10/sys/sys/sockio.h	Tue Oct 10 02:22:34 2017	(r324461)
+++ stable/10/sys/sys/sockio.h	Tue Oct 10 02:35:04 2017	(r324462)
@@ -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_ */



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201710100235.v9A2Z5xK019795>