<html><body><div style="font-size: 11pt; font-family: arial, helvetica, sans-serif; direction: null; color: #000000;" data-attr="forced_root_block_attrs">
<div>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px 'Helvetica Neue';"><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;">Chelsio filters are programmed in adapter-wide LE/TCAM tables shared by</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px 'Helvetica Neue';"><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;">all ports. rte_flow rules, however, are created on a specific ethdev and</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px 'Helvetica Neue';"><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;">are expected to apply to traffic arriving on that port.</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px 'Helvetica Neue'; min-height: 15.0px;"><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;"> </span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px 'Helvetica Neue';"><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;">The PMD already supports ingress-port matching in the hardware filter</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px 'Helvetica Neue';"><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;">spec. The iport field is validated, used for hash-region selection when</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px 'Helvetica Neue';"><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;">tp.port_shift is available, and emitted in the firmware filter work</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px 'Helvetica Neue';"><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;">request. But the rte_flow parser never sets fs.val.iport/fs.mask.iport</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px 'Helvetica Neue';"><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;">for normal per-port rules.</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px 'Helvetica Neue'; min-height: 15.0px;"><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;"> </span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px 'Helvetica Neue';"><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;">As a result, a rule created on one port is installed as an adapter-wide</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px 'Helvetica Neue';"><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;">match and can steer traffic received on sibling ports of the same</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px 'Helvetica Neue';"><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;">adapter.</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px 'Helvetica Neue'; min-height: 15.0px;"><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;"> </span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px 'Helvetica Neue';"><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;">In practice this causes cross-port steering. For example, a rule like</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px 'Helvetica Neue'; min-height: 15.0px;"><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;"> </span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px 'Helvetica Neue';"><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;"> vlan 100 -> queue 3</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px 'Helvetica Neue'; min-height: 15.0px;"><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;"> </span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px 'Helvetica Neue';"><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;">created on port 0 can also match VLAN 100 traffic arriving on port 1 and</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px 'Helvetica Neue';"><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;">redirect it into port 0's queue 3.</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px 'Helvetica Neue'; min-height: 15.0px;"><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;"> </span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px 'Helvetica Neue';"><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;">Fix this by stamping the creating ethdev's physical ingress port into</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px 'Helvetica Neue';"><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;">the filter spec before filter placement is decided.</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px 'Helvetica Neue'; min-height: 15.0px;"><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;"> </span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px 'Helvetica Neue';"><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;">Only do this when the active filter mode includes the port field</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px 'Helvetica Neue';"><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;">(tp.port_shift >= 0). If port matching is not available in the current</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px 'Helvetica Neue';"><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;">filter mode, keep the existing adapter-wide behavior.</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px 'Helvetica Neue'; min-height: 15.0px;"><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;"> </span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px 'Helvetica Neue';"><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;">Reproduce (two ports of the same adapter bound to DPDK):</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px 'Helvetica Neue'; min-height: 15.0px;"><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;"> </span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px 'Helvetica Neue';"><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;"> dpdk-testpmd -l 1-9 -a 0000:18:00.4 -a 0000:18:00.5 \</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px 'Helvetica Neue';"><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;"> -- --rxq=4 --txq=4 --forward-mode=rxonly -i</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px 'Helvetica Neue';"><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;"> testpmd> flow create 0 ingress pattern eth \</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px 'Helvetica Neue';"><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;"> / vlan tci is 100 / end actions queue index 3 / end</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px 'Helvetica Neue';"><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;"> testpmd> start</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px 'Helvetica Neue'; min-height: 15.0px;"><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;"> </span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px 'Helvetica Neue';"><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;">Without this patch, VLAN 100 traffic received on port 1 can be steered</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px 'Helvetica Neue';"><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;">by the rule created on port 0. With the patch, the rule only matches</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px 'Helvetica Neue';"><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;">traffic arriving on port 0.</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px 'Helvetica Neue'; min-height: 15.0px;"><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;"> </span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px 'Helvetica Neue';"><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;">Signed-off-by: Abdulrahman Alshawi <ashawi@wirefilter.com></span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px 'Helvetica Neue';"><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;">---</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px 'Helvetica Neue';"><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;"> .mailmap | 1 +</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px 'Helvetica Neue';"><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;"> drivers/net/cxgbe/cxgbe_flow.c | 19 +++++++++++++++++++</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px 'Helvetica Neue';"><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;"> 2 files changed, 20 insertions(+)</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px 'Helvetica Neue'; min-height: 15.0px;"><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;"> </span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px 'Helvetica Neue';"><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;">diff --git a/.mailmap b/.mailmap</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px 'Helvetica Neue';"><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;">index 0e0d83e1c6..a6bcbd5756 100644</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px 'Helvetica Neue';"><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;">--- a/.mailmap</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px 'Helvetica Neue';"><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;">+++ b/.mailmap</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px 'Helvetica Neue';"><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;">@@ -4,6 +4,7 @@ Aaro Koskinen <aaro.koskinen@nsn.com></span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px 'Helvetica Neue';"><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;"> Aaron Campbell <aaron@arbor.net></span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px 'Helvetica Neue';"><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;"> Aaron Conole <aconole@redhat.com></span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px 'Helvetica Neue';"><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;"> Abdullah Ömer Yamaç <omer.yamac@ceng.metu.edu.tr> <aomeryamac@gmail.com></span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px 'Helvetica Neue';"><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;">+Abdulrahman Alshawi <ashawi@wirefilter.com></span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px 'Helvetica Neue';"><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;"> Abdullah Sevincer <abdullah.sevincer@intel.com></span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px 'Helvetica Neue';"><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;"> Abed Kamaluddin <akamaluddin@marvell.com></span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px 'Helvetica Neue';"><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;"> Abhijit Gangurde <abhijit.gangurde@amd.com></span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px 'Helvetica Neue';"><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;">diff --git a/drivers/net/cxgbe/cxgbe_flow.c b/drivers/net/cxgbe/cxgbe_flow.c</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px 'Helvetica Neue';"><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;">index 14b9b49792..dd0634131e 100644</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px 'Helvetica Neue';"><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;">--- a/drivers/net/cxgbe/cxgbe_flow.c</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px 'Helvetica Neue';"><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;">+++ b/drivers/net/cxgbe/cxgbe_flow.c</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px 'Helvetica Neue';"><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;">@@ -172,6 +172,24 @@ cxgbe_fill_filter_region(struct adapter *adap,</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px 'Helvetica Neue';"><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;"> <span style="white-space: pre;"> </span>fs->cap = 1;<span style="white-space: pre;"> </span>/* use hash region */</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px 'Helvetica Neue';"><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;"> }</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px 'Helvetica Neue'; min-height: 15.0px;"><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;"> </span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px 'Helvetica Neue';"><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;">+static void</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px 'Helvetica Neue';"><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;">+cxgbe_scope_flow_to_port(struct rte_flow *flow)</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px 'Helvetica Neue';"><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;">+{</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px 'Helvetica Neue';"><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;">+<span style="white-space: pre;"> </span>struct adapter *adap = ethdev2adap(flow->dev);</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px 'Helvetica Neue';"><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;">+<span style="white-space: pre;"> </span>struct port_info *pi = ethdev2pinfo(flow->dev);</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px 'Helvetica Neue';"><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;">+</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px 'Helvetica Neue';"><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;">+<span style="white-space: pre;"> </span>/*</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px 'Helvetica Neue';"><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;">+<span style="white-space: pre;"> </span>* Chelsio filters are programmed in adapter-global tables. DPDK</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px 'Helvetica Neue';"><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;">+<span style="white-space: pre;"> </span>* ingress rte_flow rules are created on a specific ethdev, so include</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px 'Helvetica Neue';"><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;">+<span style="white-space: pre;"> </span>* the physical ingress port when the active filter mode supports it.</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px 'Helvetica Neue';"><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;">+<span style="white-space: pre;"> </span>*/</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px 'Helvetica Neue';"><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;">+<span style="white-space: pre;"> </span>if (adap->params.tp.port_shift < 0)</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px 'Helvetica Neue';"><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;">+<span style="white-space: pre;"> </span><span style="white-space: pre;"> </span>return;</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px 'Helvetica Neue';"><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;">+</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px 'Helvetica Neue';"><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;">+<span style="white-space: pre;"> </span>flow->fs.val.iport = pi->port_id;</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px 'Helvetica Neue';"><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;">+<span style="white-space: pre;"> </span>flow->fs.mask.iport = (1U << IPORT_BITWIDTH) - 1;</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px 'Helvetica Neue';"><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;">+}</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px 'Helvetica Neue';"><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;">+</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px 'Helvetica Neue';"><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;"> static int</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px 'Helvetica Neue';"><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;"> ch_rte_parsetype_eth(const void *dmask, const struct rte_flow_item *item,</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px 'Helvetica Neue';"><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;"> <span style="white-space: pre;"> </span><span style="white-space: pre;"> </span> struct ch_filter_specification *fs,</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px 'Helvetica Neue';"><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;">@@ -986,6 +1004,7 @@ cxgbe_rtef_parse_items(struct rte_flow *flow,</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px 'Helvetica Neue';"><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;"> <span style="white-space: pre;"> </span>}</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px 'Helvetica Neue'; min-height: 15.0px;"><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;"> </span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px 'Helvetica Neue';"><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;"> <span style="white-space: pre;"> </span>cxgbe_tweak_filter_spec(adap, &flow->fs);</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px 'Helvetica Neue';"><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;">+<span style="white-space: pre;"> </span>cxgbe_scope_flow_to_port(flow);</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px 'Helvetica Neue';"><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;"> <span style="white-space: pre;"> </span>cxgbe_fill_filter_region(adap, &flow->fs);</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px 'Helvetica Neue'; min-height: 15.0px;"><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;"> </span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px 'Helvetica Neue';"><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;"> <span style="white-space: pre;"> </span>return 0;</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px 'Helvetica Neue';"><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;">-- </span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px 'Helvetica Neue';"><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;">2.39.5</span></p>
</div>
<div id="signature-content-no-signature" data-marker="__SIG_PRE__"></div>
<div><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;"> </span></div>
<div>
<div id="OLK_SRC_BODY_SECTION">
<div id="OLK_SRC_BODY_SECTION">
<blockquote style="margin: 0 0 0 .8em; border-left: 1px #ccc solid; padding-left: 1em;"><hr id="MESSAGE_DATA_MARKER"><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;"><strong>From: </strong>Abdulrahman <ashawi@wirefilter.com></span><br><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;"><strong>To: </strong>dev <dev@dpdk.org></span><br><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;"><strong>Cc: </strong>bharat <bharat@chelsio.com>; stable <stable@dpdk.org></span><br><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;"><strong>Date: </strong>Monday, 27 April 2026 7:30 PM +03</span><br><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;"><strong>Subject: </strong>[PATCH 0/2] net/cxgbe: fix packed Rx handling and flow port scoping</span><br><br>
<div style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif; color: #000000;">
<div>
<div>
<p><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;">This series fixes two correctness issues in the cxgbe PMD that can cause</span><br><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;">traffic loss on Chelsio T6 adapters, especially when rte_flow QUEUE</span><br><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;">rules concentrate ingress on a small set of RX queues.</span></p>
<p><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;">Patch 1 fixes packed Rx response handling. The current PMD assumes every</span><br><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;">response descriptor starts a new Free List buffer by requiring</span><br><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;">F_RSPD_NEWBUF on each response. That assumption does not always hold for</span><br><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;">packed ingress responses. Under sustained small-packet traffic to a</span><br><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;">single ingress queue, the FL/IQ state goes out of sync and the affected</span><br><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;">Rx path stops making forward progress.</span></p>
<p><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;">Patch 2 scopes rte_flow rules to the ingress port they were created on.</span><br><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;">Chelsio filters are programmed in adapter-wide tables, and the PMD</span><br><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;">already supports the iport field in the hardware filter spec. However,</span><br><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;">the flow parser never fills it for normal per-port rules, so a rule</span><br><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;">created on one port can also match traffic arriving on sibling ports of</span><br><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;">the same adapter.</span></p>
<p><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;">Both issues reproduce with stock testpmd on T62100-LP-CR. The per-patch</span><br><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;">commit messages include the details and reproducers.</span></p>
<p><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;">Abdulrahman Alshawi (2):</span><br><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;">net/cxgbe: fix Rx handling for packed responses</span><br><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;">net/cxgbe: restrict rte_flow rules to ingress port</span></p>
<p><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;">.mailmap | 1 +</span><br><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;">drivers/net/cxgbe/base/adapter.h | 1 +</span><br><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;">drivers/net/cxgbe/cxgbe_flow.c | 19 +++++</span><br><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;">drivers/net/cxgbe/sge.c | 122 ++++++++++++++++++++++++-------</span><br><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;">4 files changed, 118 insertions(+), 25 deletions(-)</span></p>
<p><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;">--</span><br><span style="font-size: 11pt; font-family: arial, helvetica, sans-serif;">2.39.5</span></p>
</div>
</div>
<div id="signature-content-no-signature"></div>
</div>
</blockquote>
</div>
</div></div>
</div></body></html>