Add two new ifnet capabilities for hw checksumming and TSO for VXLAN traffic.

These are similar to the existing VLAN capabilities.

Reviewed by:	kib@
Sponsored by:	Chelsio Communications
Differential Revision:	https://reviews.freebsd.org/D25873
This commit is contained in:
Navdeep Parhar 2020-09-18 02:10:28 +00:00
parent 1f7313861b
commit 830edb4561
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=365868
4 changed files with 26 additions and 3 deletions

View File

@ -28,7 +28,7 @@
.\" From: @(#)ifconfig.8 8.3 (Berkeley) 1/5/94
.\" $FreeBSD$
.\"
.Dd June 4, 2020
.Dd September 17, 2020
.Dt IFCONFIG 8
.Os
.Sh NAME
@ -587,7 +587,7 @@ If the driver offers user-configurable VLAN support, enable
reception of extended frames, tag processing in hardware,
frame filtering in hardware, checksum offloading, or TSO on VLAN,
respectively.
Note that this must be issued on a physical interface associated with
Note that this must be configured on a physical interface associated with
.Xr vlan 4 ,
not on a
.Xr vlan 4
@ -597,6 +597,21 @@ If the driver offers user-configurable VLAN support, disable
reception of extended frames, tag processing in hardware,
frame filtering in hardware, or TSO on VLAN,
respectively.
.It Cm vxlanhwcsum , vxlanhwtso
If the driver offers user-configurable VXLAN support, enable inner checksum
offloading (receive and transmit) or TSO on VXLAN, respectively.
Note that this must be configured on a physical interface associated with
.Xr vxlan 4 ,
not on a
.Xr vxlan 4
interface itself.
The physical interface is either the interface specified as the vxlandev
or the interface hosting the vxlanlocal address.
The driver will offload as much checksum work and TSO as it can reliably
support, the exact level of offloading may vary between drivers.
.It Fl vxlanhwcsum , vxlanhwtso
If the driver offers user-configurable VXLAN support, disable checksum
offloading (receive and transmit) or TSO on VXLAN, respectively.
.It Cm vnet Ar jail
Move the interface to the
.Xr jail 8 ,

View File

@ -1344,7 +1344,8 @@ unsetifdescr(const char *val, int value, int s, const struct afswtch *afp)
"\020\1RXCSUM\2TXCSUM\3NETCONS\4VLAN_MTU\5VLAN_HWTAGGING\6JUMBO_MTU\7POLLING" \
"\10VLAN_HWCSUM\11TSO4\12TSO6\13LRO\14WOL_UCAST\15WOL_MCAST\16WOL_MAGIC" \
"\17TOE4\20TOE6\21VLAN_HWFILTER\23VLAN_HWTSO\24LINKSTATE\25NETMAP" \
"\26RXCSUM_IPV6\27TXCSUM_IPV6\31TXRTLMT\32HWRXTSTMP\33NOMAP\34TXTLS4\35TXTLS6"
"\26RXCSUM_IPV6\27TXCSUM_IPV6\31TXRTLMT\32HWRXTSTMP\33NOMAP\34TXTLS4\35TXTLS6" \
"\36VXLAN_HWCSUM\37VXLAN_HWTSO"
/*
* Print the status of the interface. If an address family was

View File

@ -620,6 +620,11 @@ static struct cmd vxlan_cmds[] = {
DEF_CMD("vxlanflush", 0, setvxlan_flush),
DEF_CMD("vxlanflushall", 1, setvxlan_flush),
DEF_CMD("vxlanhwcsum", IFCAP_VXLAN_HWCSUM, setifcap),
DEF_CMD("-vxlanhwcsum", -IFCAP_VXLAN_HWCSUM, setifcap),
DEF_CMD("vxlanhwtso", IFCAP_VXLAN_HWTSO, setifcap),
DEF_CMD("-vxlanhwtso", -IFCAP_VXLAN_HWTSO, setifcap),
};
static struct afswtch af_vxlan = {

View File

@ -248,6 +248,8 @@ struct if_data {
#define IFCAP_NOMAP 0x4000000 /* can TX unmapped mbufs */
#define IFCAP_TXTLS4 0x8000000 /* can do TLS encryption and segmentation for TCP */
#define IFCAP_TXTLS6 0x10000000 /* can do TLS encryption and segmentation for TCP6 */
#define IFCAP_VXLAN_HWCSUM 0x20000000 /* can do IFCAN_HWCSUM on VXLANs */
#define IFCAP_VXLAN_HWTSO 0x40000000 /* can do IFCAP_TSO on VXLANs */
#define IFCAP_HWCSUM_IPV6 (IFCAP_RXCSUM_IPV6 | IFCAP_TXCSUM_IPV6)