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 MFC after: 1 week Sponsored by: Microsoft Differential Revision: https://reviews.freebsd.org/D12174
This commit is contained in:
parent
b329ee9386
commit
1182b9fe17
|
@ -526,6 +526,42 @@ struct ifi2creq {
|
||||||
uint8_t data[8]; /* read buffer */
|
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 */
|
#endif /* __BSD_VISIBLE */
|
||||||
|
|
||||||
#ifdef _KERNEL
|
#ifdef _KERNEL
|
||||||
|
|
|
@ -134,4 +134,8 @@
|
||||||
#define SIOCGIFGMEMB _IOWR('i', 138, struct ifgroupreq) /* get members */
|
#define SIOCGIFGMEMB _IOWR('i', 138, struct ifgroupreq) /* get members */
|
||||||
#define SIOCGIFXMEDIA _IOWR('i', 139, struct ifmediareq) /* get net xmedia */
|
#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_ */
|
#endif /* !_SYS_SOCKIO_H_ */
|
||||||
|
|
Loading…
Reference in New Issue