[2/2] net/netvsc: avoid mixing buffered and direct packets

Message ID 20200316235612.29854-3-stephen@networkplumber.org (mailing list archive)
State Superseded, archived
Delegated to: Ferruh Yigit
Headers
Series net/netvsc: patches |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/travis-robot success Travis build: passed

Commit Message

Stephen Hemminger March 16, 2020, 11:56 p.m. UTC
  Putting buffered and direct packets together into one request is
an unnecessary optimization. Better to split into two requests
(buffered and direct).

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 drivers/net/netvsc/hn_rxtx.c | 15 +++++++--------
 1 file changed, 7 insertions(+), 8 deletions(-)
  

Patch

diff --git a/drivers/net/netvsc/hn_rxtx.c b/drivers/net/netvsc/hn_rxtx.c
index 7212780c156e..aad3d8c04c7f 100644
--- a/drivers/net/netvsc/hn_rxtx.c
+++ b/drivers/net/netvsc/hn_rxtx.c
@@ -1362,15 +1362,14 @@  hn_xmit_pkts(void *ptxq, struct rte_mbuf **tx_pkts, uint16_t nb_pkts)
 		} else {
 			struct hn_txdesc *txd;
 
-			/* can send chimney data and large packet at once */
+			/* Send any outstanding packets in buffer */
 			txd = txq->agg_txd;
-			if (txd) {
-				hn_reset_txagg(txq);
-			} else {
-				txd = hn_new_txd(hv, txq);
-				if (unlikely(!txd))
-					break;
-			}
+			if (txd && hn_flush_txagg(txq, &need_sig))
+				goto fail;
+
+			txd = hn_new_txd(hv, txq);
+			if (unlikely(!txd))
+				break;
 
 			pkt = txd->rndis_pkt;
 			txd->m = m;