Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 18 Sep 2020 02:10:29 +0000 (UTC)
From:      Navdeep Parhar <np@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r365868 - in head: sbin/ifconfig sys/net
Message-ID:  <202009180210.08I2AT3p087561@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: np
Date: Fri Sep 18 02:10:28 2020
New Revision: 365868
URL: https://svnweb.freebsd.org/changeset/base/365868

Log:
  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

Modified:
  head/sbin/ifconfig/ifconfig.8
  head/sbin/ifconfig/ifconfig.c
  head/sbin/ifconfig/ifvxlan.c
  head/sys/net/if.h

Modified: head/sbin/ifconfig/ifconfig.8
==============================================================================
--- head/sbin/ifconfig/ifconfig.8	Fri Sep 18 01:38:47 2020	(r365867)
+++ head/sbin/ifconfig/ifconfig.8	Fri Sep 18 02:10:28 2020	(r365868)
@@ -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, e
 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, d
 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 ,

Modified: head/sbin/ifconfig/ifconfig.c
==============================================================================
--- head/sbin/ifconfig/ifconfig.c	Fri Sep 18 01:38:47 2020	(r365867)
+++ head/sbin/ifconfig/ifconfig.c	Fri Sep 18 02:10:28 2020	(r365868)
@@ -1344,7 +1344,8 @@ unsetifdescr(const char *val, int value, int s, const 
 "\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

Modified: head/sbin/ifconfig/ifvxlan.c
==============================================================================
--- head/sbin/ifconfig/ifvxlan.c	Fri Sep 18 01:38:47 2020	(r365867)
+++ head/sbin/ifconfig/ifvxlan.c	Fri Sep 18 02:10:28 2020	(r365868)
@@ -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 = {

Modified: head/sys/net/if.h
==============================================================================
--- head/sys/net/if.h	Fri Sep 18 01:38:47 2020	(r365867)
+++ head/sys/net/if.h	Fri Sep 18 02:10:28 2020	(r365868)
@@ -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)
 



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