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
This commit is contained in:
parent
357c2ebbb4
commit
4142e8cfbb
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=341138
@ -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,
|
||||
|
@ -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
|
||||
|
@ -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,
|
||||
|
@ -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 *);
|
||||
|
@ -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
|
||||
|
@ -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,
|
||||
|
Loading…
Reference in New Issue
Block a user