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 <step...@networkplumber.org>
---
 drivers/net/netvsc/hn_rxtx.c | 15 +++++++--------
 1 file changed, 7 insertions(+), 8 deletions(-)

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;
-- 
2.20.1

Reply via email to