svn commit: r342522 - stable/10/sys/dev/sfxge
Andrew Rybchenko
arybchik at FreeBSD.org
Wed Dec 26 10:28:45 UTC 2018
Author: arybchik
Date: Wed Dec 26 10:28:43 2018
New Revision: 342522
URL: https://svnweb.freebsd.org/changeset/base/342522
Log:
MFC r341327
sfxge(4): rollback last seen VLAN TCI if Tx packet is dropped
Early processing of a packet on transmit may change last seen
VLAN TCI in the queue context. If such a packet is eventually
dropped, last seen VLAN TCI must be set to its previous value.
Submitted by: Ivan Malov <Ivan.Malov at oktetlabs.ru>
Sponsored by: Solarflare Communications, Inc.
Differential Revision: https://reviews.freebsd.org/D18288
Modified:
stable/10/sys/dev/sfxge/sfxge_tx.c
Directory Properties:
stable/10/ (props changed)
Modified: stable/10/sys/dev/sfxge/sfxge_tx.c
==============================================================================
--- stable/10/sys/dev/sfxge/sfxge_tx.c Wed Dec 26 10:28:03 2018 (r342521)
+++ stable/10/sys/dev/sfxge/sfxge_tx.c Wed Dec 26 10:28:43 2018 (r342522)
@@ -352,6 +352,7 @@ static int sfxge_tx_queue_mbuf(struct sfxge_txq *txq,
int rc;
int i;
int eop;
+ uint16_t hw_vlan_tci_prev;
int vlan_tagged;
KASSERT(!txq->blocked, ("txq->blocked"));
@@ -403,6 +404,8 @@ static int sfxge_tx_queue_mbuf(struct sfxge_txq *txq,
used_map = &stmp->map;
+ hw_vlan_tci_prev = txq->hw_vlan_tci;
+
vlan_tagged = sfxge_tx_maybe_insert_tag(txq, mbuf);
if (vlan_tagged) {
sfxge_next_stmp(txq, &stmp);
@@ -454,6 +457,7 @@ static int sfxge_tx_queue_mbuf(struct sfxge_txq *txq,
return (0);
reject_mapped:
+ txq->hw_vlan_tci = hw_vlan_tci_prev;
bus_dmamap_unload(txq->packet_dma_tag, *used_map);
reject:
/* Drop the packet on the floor. */
More information about the svn-src-stable-10
mailing list