aboutsummaryrefslogtreecommitdiffstats
path: root/dpdk/dpdk-2.2.0_patches/0012-enic-fix-last-packet-not-being-sent.patch
diff options
context:
space:
mode:
Diffstat (limited to 'dpdk/dpdk-2.2.0_patches/0012-enic-fix-last-packet-not-being-sent.patch')
-rw-r--r--dpdk/dpdk-2.2.0_patches/0012-enic-fix-last-packet-not-being-sent.patch34
1 files changed, 34 insertions, 0 deletions
diff --git a/dpdk/dpdk-2.2.0_patches/0012-enic-fix-last-packet-not-being-sent.patch b/dpdk/dpdk-2.2.0_patches/0012-enic-fix-last-packet-not-being-sent.patch
new file mode 100644
index 00000000000..181ca912f32
--- /dev/null
+++ b/dpdk/dpdk-2.2.0_patches/0012-enic-fix-last-packet-not-being-sent.patch
@@ -0,0 +1,34 @@
+commit aba31298526865f5db99eaa54b63eb39dc95b74f
+Author: John Daley <johndale@cisco.com>
+Date: Tue Mar 8 10:49:07 2016 -0800
+
+ enic: fix last packet not being sent
+
+ The last packet of the tx burst function array was not being
+ emitted until the subsequent call. The nic descriptor index
+ was being set to the current tx descriptor instead of one past
+ the descriptor as required by the nic.
+
+ Fixes: d739ba4c6abf ("enic: improve Tx packet rate")
+
+ Signed-off-by: John Daley <johndale@cisco.com>
+
+diff --git a/drivers/net/enic/base/enic_vnic_wq.h b/drivers/net/enic/base/enic_vnic_wq.h
+index e3ea574..b019109 100644
+--- a/drivers/net/enic/base/enic_vnic_wq.h
++++ b/drivers/net/enic/base/enic_vnic_wq.h
+@@ -69,11 +69,11 @@ static inline void enic_vnic_post_wq(struct vnic_wq *wq,
+ buf->wr_id = wrid;
+
+ buf = buf->next;
+- if (cq_entry)
+- enic_vnic_post_wq_index(wq);
++ wq->ring.desc_avail -= desc_skip_cnt;
+ wq->to_use = buf;
+
+- wq->ring.desc_avail -= desc_skip_cnt;
++ if (cq_entry)
++ enic_vnic_post_wq_index(wq);
+ }
+
+ #endif /* _ENIC_VNIC_WQ_H_ */