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-stable-11
mailing list