svn commit: r341138 - in head/sys/dev/sfxge: . common

Andrew Rybchenko arybchik at FreeBSD.org
Wed Nov 28 09:25:47 UTC 2018


Author: arybchik
Date: Wed Nov 28 09:25:43 2018
New Revision: 341138
URL: https://svnweb.freebsd.org/changeset/base/341138

Log:
  sfxge(4): add outer IP ID parameter to TSOv2 descriptor
  
  Set outer_ip_id in the TX option descriptor for encapsulated packets.
  
  Submitted by:   Vijay Srivastava <vijays at solarflare.com>
  Sponsored by:   Solarflare Communications, Inc.
  Differential Revision:  https://reviews.freebsd.org/D18213

Modified:
  head/sys/dev/sfxge/common/ef10_impl.h
  head/sys/dev/sfxge/common/ef10_tx.c
  head/sys/dev/sfxge/common/efx.h
  head/sys/dev/sfxge/common/efx_impl.h
  head/sys/dev/sfxge/common/efx_tx.c
  head/sys/dev/sfxge/sfxge_tx.c

Modified: head/sys/dev/sfxge/common/ef10_impl.h
==============================================================================
--- head/sys/dev/sfxge/common/ef10_impl.h	Wed Nov 28 09:25:31 2018	(r341137)
+++ head/sys/dev/sfxge/common/ef10_impl.h	Wed Nov 28 09:25:43 2018	(r341138)
@@ -782,6 +782,7 @@ extern	void
 ef10_tx_qdesc_tso2_create(
 	__in			efx_txq_t *etp,
 	__in			uint16_t ipv4_id,
+	__in			uint16_t outer_ipv4_id,
 	__in			uint32_t tcp_seq,
 	__in			uint16_t tcp_mss,
 	__out_ecount(count)	efx_desc_t *edp,

Modified: head/sys/dev/sfxge/common/ef10_tx.c
==============================================================================
--- head/sys/dev/sfxge/common/ef10_tx.c	Wed Nov 28 09:25:31 2018	(r341137)
+++ head/sys/dev/sfxge/common/ef10_tx.c	Wed Nov 28 09:25:43 2018	(r341138)
@@ -650,6 +650,7 @@ ef10_tx_qdesc_tso_create(
 ef10_tx_qdesc_tso2_create(
 	__in			efx_txq_t *etp,
 	__in			uint16_t ipv4_id,
+	__in			uint16_t outer_ipv4_id,
 	__in			uint32_t tcp_seq,
 	__in			uint16_t tcp_mss,
 	__out_ecount(count)	efx_desc_t *edp,
@@ -671,13 +672,14 @@ ef10_tx_qdesc_tso2_create(
 			    ESE_DZ_TX_TSO_OPTION_DESC_FATSO2A,
 			    ESF_DZ_TX_TSO_IP_ID, ipv4_id,
 			    ESF_DZ_TX_TSO_TCP_SEQNO, tcp_seq);
-	EFX_POPULATE_QWORD_4(edp[1].ed_eq,
+	EFX_POPULATE_QWORD_5(edp[1].ed_eq,
 			    ESF_DZ_TX_DESC_IS_OPT, 1,
 			    ESF_DZ_TX_OPTION_TYPE,
 			    ESE_DZ_TX_OPTION_DESC_TSO,
 			    ESF_DZ_TX_TSO_OPTION_TYPE,
 			    ESE_DZ_TX_TSO_OPTION_DESC_FATSO2B,
-			    ESF_DZ_TX_TSO_TCP_MSS, tcp_mss);
+			    ESF_DZ_TX_TSO_TCP_MSS, tcp_mss,
+			    ESF_DZ_TX_TSO_OUTER_IPID, outer_ipv4_id);
 }
 
 	void

Modified: head/sys/dev/sfxge/common/efx.h
==============================================================================
--- head/sys/dev/sfxge/common/efx.h	Wed Nov 28 09:25:31 2018	(r341137)
+++ head/sys/dev/sfxge/common/efx.h	Wed Nov 28 09:25:43 2018	(r341138)
@@ -2323,6 +2323,7 @@ extern	void
 efx_tx_qdesc_tso2_create(
 	__in			efx_txq_t *etp,
 	__in			uint16_t ipv4_id,
+	__in			uint16_t outer_ipv4_id,
 	__in			uint32_t tcp_seq,
 	__in			uint16_t tcp_mss,
 	__out_ecount(count)	efx_desc_t *edp,

Modified: head/sys/dev/sfxge/common/efx_impl.h
==============================================================================
--- head/sys/dev/sfxge/common/efx_impl.h	Wed Nov 28 09:25:31 2018	(r341137)
+++ head/sys/dev/sfxge/common/efx_impl.h	Wed Nov 28 09:25:43 2018	(r341138)
@@ -145,7 +145,7 @@ typedef struct efx_tx_ops_s {
 						uint32_t, uint8_t,
 						efx_desc_t *);
 	void		(*etxo_qdesc_tso2_create)(efx_txq_t *, uint16_t,
-						uint32_t, uint16_t,
+						uint16_t, uint32_t, uint16_t,
 						efx_desc_t *, int);
 	void		(*etxo_qdesc_vlantci_create)(efx_txq_t *, uint16_t,
 						efx_desc_t *);

Modified: head/sys/dev/sfxge/common/efx_tx.c
==============================================================================
--- head/sys/dev/sfxge/common/efx_tx.c	Wed Nov 28 09:25:31 2018	(r341137)
+++ head/sys/dev/sfxge/common/efx_tx.c	Wed Nov 28 09:25:43 2018	(r341138)
@@ -654,6 +654,7 @@ efx_tx_qdesc_tso_create(
 efx_tx_qdesc_tso2_create(
 	__in			efx_txq_t *etp,
 	__in			uint16_t ipv4_id,
+	__in			uint16_t outer_ipv4_id,
 	__in			uint32_t tcp_seq,
 	__in			uint16_t mss,
 	__out_ecount(count)	efx_desc_t *edp,
@@ -665,7 +666,8 @@ efx_tx_qdesc_tso2_create(
 	EFSYS_ASSERT3U(etp->et_magic, ==, EFX_TXQ_MAGIC);
 	EFSYS_ASSERT(etxop->etxo_qdesc_tso2_create != NULL);
 
-	etxop->etxo_qdesc_tso2_create(etp, ipv4_id, tcp_seq, mss, edp, count);
+	etxop->etxo_qdesc_tso2_create(etp, ipv4_id, outer_ipv4_id,
+	    tcp_seq, mss, edp, count);
 }
 
 	void

Modified: head/sys/dev/sfxge/sfxge_tx.c
==============================================================================
--- head/sys/dev/sfxge/sfxge_tx.c	Wed Nov 28 09:25:31 2018	(r341137)
+++ head/sys/dev/sfxge/sfxge_tx.c	Wed Nov 28 09:25:43 2018	(r341138)
@@ -1176,6 +1176,7 @@ static int tso_start_new_packet(struct sfxge_txq *txq,
 			desc = &txq->pend_desc[txq->n_pend_desc];
 			efx_tx_qdesc_tso2_create(txq->common,
 						 tso->packet_id,
+						 0,
 						 tso->seqnum,
 						 tso->seg_size,
 						 desc,


More information about the svn-src-all mailing list