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_ */
_______________________________________________
svn-src-stable-10@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-stable-10
To unsubscribe, send any mail to "svn-src-stable-10-unsubscr...@freebsd.org"

Reply via email to