<html><body><div style="font-size: 11pt; font-family: arial, helvetica, sans-serif; direction: null; color: #000000;" data-attr="forced_root_block_attrs">
<div><br>Adding Vipin Varghese<br><br></div>
<div id="signature-content-no-signature" data-marker="__SIG_PRE__"></div>
<div> </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"><strong>From: </strong>Abdulrahman <ashawi@wirefilter.com><br><strong>To: </strong>dev <dev@dpdk.org><br><strong>Cc: </strong>bharat <bharat@chelsio.com>; stable <stable@dpdk.org><br><strong>Date: </strong>Monday, 27 April 2026 7:40 PM +03<br><strong>Subject: </strong>[PATCH 1/2] net/cxgbe: fix Rx handling for packed responses<br><br>
<div style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif; color: #000000;">
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">The Rx path assumes every SGE response starts a new Free List buffer:</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue'; min-height: 15px;"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;"> </span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">    BUG_ON(!(len & F_RSPD_NEWBUF));</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue'; min-height: 15px;"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;"> </span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">That is not always true. On T5/T6, small packets can be packed into the</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">same FL buffer. Only the first response for that buffer has NEWBUF set;</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">later responses can refer to the same buffer with a different payload</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">offset.</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue'; min-height: 15px;"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;"> </span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">The current PMD consumes one FL buffer per response. When packed</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">responses are delivered, the FL consumer state goes out of sync with the</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">hardware and the affected ingress queue stops making progress. From user</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">space this shows up as:</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue'; min-height: 15px;"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;"> </span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">  - rx_bgN_dropped_packets increasing at line rate</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">  - q_ipackets for the affected queue staying at 0</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">  - imissed increasing</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">  - no recovery until the port is restarted</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue'; min-height: 15px;"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;"> </span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">Fix this by tracking packed-buffer alignment and copying packet payload</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">from the current FL buffer at q->offset, only freeing the FL buffer once</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">it has actually been consumed.</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue'; min-height: 15px;"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;"> </span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">This patch:</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">  - adds sge::fl_align from the ingress pad/pack settings</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">  - introduces cxgbe_copy_rx_pkt() to copy from packed FL buffers</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">  - advances q->offset by len rounded up to fl_align</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">  - frees an FL buffer only after full consumption</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">  - drains the previous buffer when a later response arrives with NEWBUF</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue'; min-height: 15px;"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;"> </span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">Reproduce (T62100-LP-CR, FW 2.1.19.0 / TP 0.1.23.2):</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue'; min-height: 15px;"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;"> </span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">  dpdk-testpmd -l 1-9 -a 0000:18:00.4 -- \</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">             --rxq=32 --txq=32 --nb-cores=8 --forward-mode=rxonly -i</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue'; min-height: 15px;"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;"> </span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">  testpmd> port stop all</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">  testpmd> flow flush 0</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px '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: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">           / vlan tci spec 0 tci mask 0x0007 \</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">           / end actions queue index 5 / end</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">  testpmd> port start all</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">  testpmd> start</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue'; min-height: 15px;"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;"> </span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">Without this patch, rx_qN_packets stays at 0 while</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">rx_bgN_dropped_packets rises at line rate. With the patch,</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">rx_qN_packets tracks received traffic and rx_bgN_dropped_packets</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">stays at 0.</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue'; min-height: 15px;"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;"> </span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px '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: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">---</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;"> drivers/net/cxgbe/base/adapter.h |   1 +</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;"> drivers/net/cxgbe/sge.c          | 122 ++++++++++++++++++++++++-------</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;"> 2 files changed, 98 insertions(+), 25 deletions(-)</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue'; min-height: 15px;"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;"> </span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">diff --git a/drivers/net/cxgbe/base/adapter.h b/drivers/net/cxgbe/base/adapter.h</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">index 207f3ecb88..e67cf22950 100644</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">--- a/drivers/net/cxgbe/base/adapter.h</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">+++ b/drivers/net/cxgbe/base/adapter.h</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">@@ -280,6 +280,7 @@ struct sge {</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">    u16 max_ethqsets;           /* # of available Ethernet queue sets */</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">    u32 stat_len;               /* length of status page at ring end */</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">    u32 pktshift;               /* padding between CPL & packet data */</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">+   u32 fl_align;               /* packed Rx packet alignment */</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue'; min-height: 15px;"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;"> </span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">    /* response queue interrupt parameters */</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">    u16 timer_val[SGE_NTIMERS];</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">diff --git a/drivers/net/cxgbe/sge.c b/drivers/net/cxgbe/sge.c</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">index e9d45f24c4..7cf5c70775 100644</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">--- a/drivers/net/cxgbe/sge.c</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">+++ b/drivers/net/cxgbe/sge.c</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">@@ -1492,6 +1492,90 @@ static inline void cxgbe_fill_mbuf_info(struct adapter *adap,</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">                   RTE_MBUF_F_RX_L4_CKSUM_BAD);</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;"> }</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue'; min-height: 15px;"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;"> </span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">+static int cxgbe_copy_rx_pkt(struct sge_rspq *q, struct sge_eth_rxq *rxq,</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">+               u32 len, struct rte_mbuf **out)</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">+{</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">+   struct sge *s = &q->adapter->sge;</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">+   struct rte_mbuf *pkt;</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">+   char *dst;</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">+   u32 copied = 0;</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">+   u32 remaining = len;</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">+</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">+   pkt = rte_pktmbuf_alloc(q->mb_pool);</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">+   if (unlikely(!pkt)) {</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">+       rxq->rspq.eth_dev->data->rx_mbuf_alloc_failed++;</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">+       rxq->stats.rx_drops++;</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">+       return -ENOMEM;</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">+   }</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">+</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">+   dst = rte_pktmbuf_append(pkt, len);</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">+   if (unlikely(!dst)) {</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">+       rte_pktmbuf_free(pkt);</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">+       rxq->stats.rx_drops++;</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">+       return -ENOMEM;</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">+   }</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">+</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">+   while (remaining) {</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">+       const struct rx_sw_desc *rsd = &rxq->fl.sdesc[rxq->fl.cidx];</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">+       struct rte_mbuf *src = rsd->buf;</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">+       u32 bufsz = get_buf_size(q->adapter, rsd);</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">+       u32 copy_len;</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">+</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">+       if (unlikely(!src || q->offset < 0 ||</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">+               (u32)q->offset >= bufsz)) {</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">+           rte_pktmbuf_free(pkt);</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">+           rxq->stats.rx_drops++;</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">+           return -EINVAL;</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">+       }</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">+</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">+       copy_len = RTE_MIN(bufsz - (u32)q->offset, remaining);</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">+       rte_memcpy(dst + copied,</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">+             rte_pktmbuf_mtod_offset(src, const void *, q->offset),</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">+             copy_len);</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">+</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">+       copied += copy_len;</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">+       remaining -= copy_len;</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">+       q->offset += copy_len;</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">+</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">+       if (remaining) {</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">+           free_rx_bufs(&rxq->fl, 1);</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">+           q->offset = 0;</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">+           continue;</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">+       }</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">+</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">+       q->offset = RTE_ALIGN_CEIL(q->offset, s->fl_align);</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">+       if ((u32)q->offset >= bufsz) {</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">+           free_rx_bufs(&rxq->fl, 1);</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">+           q->offset = 0;</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">+       }</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">+   }</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">+</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">+   *out = pkt;</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">+   return 0;</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">+}</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">+</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">+static unsigned int cxgbe_fl_pkt_align(struct adapter *adap)</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">+{</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">+   u32 sge_control = t4_read_reg(adap, A_SGE_CONTROL);</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">+   unsigned int ingpad_shift, ingpad, fl_align;</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">+</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">+   ingpad_shift = CHELSIO_CHIP_VERSION(adap->params.chip) <= CHELSIO_T5 ?</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">+             X_INGPADBOUNDARY_SHIFT : X_T6_INGPADBOUNDARY_SHIFT;</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">+   ingpad = 1U << (G_INGPADBOUNDARY(sge_control) + ingpad_shift);</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">+   fl_align = ingpad;</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">+</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">+   if (!is_t4(adap->params.chip)) {</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">+       u32 sge_control2 = t4_read_reg(adap, A_SGE_CONTROL2);</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">+       unsigned int ingpack = G_INGPACKBOUNDARY(sge_control2);</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">+</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">+       ingpack = ingpack == X_INGPACKBOUNDARY_16B ?</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">+            16 : 1U << (ingpack + X_INGPACKBOUNDARY_SHIFT);</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">+       fl_align = RTE_MAX(ingpad, ingpack);</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">+   }</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">+</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">+   return fl_align ? fl_align : RTE_CACHE_LINE_SIZE;</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">+}</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">+</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;"> /**</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">  * process_responses - process responses from an SGE response queue</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">  * @q: the ingress queue to process</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">@@ -1535,14 +1619,12 @@ static int process_responses(struct sge_rspq *q, int budget,</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">            stat_pidx = ntohs(q->stat->pidx);</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">            stat_pidx_diff = P_IDXDIFF(q, stat_pidx);</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">            while (stat_pidx_diff && budget_left) {</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">-               const struct rx_sw_desc *rsd =</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">-                   &rxq->fl.sdesc[rxq->fl.cidx];</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">                const struct rss_header *rss_hdr =</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">                    (const void *)q->cur_desc;</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">                const struct cpl_rx_pkt *cpl =</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">                    (const void *)&q->cur_desc[1];</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">-               struct rte_mbuf *pkt, *npkt;</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">-               u32 len, bufsz;</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">+               struct rte_mbuf *pkt;</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">+               u32 len;</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue'; min-height: 15px;"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;"> </span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">                rc = (const struct rsp_ctrl *)</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">                    ((const char *)q->cur_desc +</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">@@ -1553,28 +1635,16 @@ static int process_responses(struct sge_rspq *q, int budget,</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">                    break;</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue'; min-height: 15px;"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;"> </span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">                len = ntohl(rc->pldbuflen_qid);</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">-               BUG_ON(!(len & F_RSPD_NEWBUF));</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">-               pkt = rsd->buf;</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">-               npkt = pkt;</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">-               len = G_RSPD_LEN(len);</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">-               pkt->pkt_len = len;</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">-</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">-               /* Chain mbufs into len if necessary */</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">-               while (len) {</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">-                   struct rte_mbuf *new_pkt = rsd->buf;</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">-</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">-                   bufsz = min(get_buf_size(q->adapter,</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">-                               rsd), len);</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">-                   new_pkt->data_len = bufsz;</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">-                   unmap_rx_buf(&rxq->fl);</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">-                   len -= bufsz;</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">-                   npkt->next = new_pkt;</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">-                   npkt = new_pkt;</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">-                   pkt->nb_segs++;</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">-                   rsd = &rxq->fl.sdesc[rxq->fl.cidx];</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">+               if (len & F_RSPD_NEWBUF) {</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">+                   if (q->offset > 0) {</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">+                       free_rx_bufs(&rxq->fl, 1);</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">+                       q->offset = 0;</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">+                   }</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">                }</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">-               npkt->next = NULL;</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">-               pkt->nb_segs--;</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">+               len = G_RSPD_LEN(len);</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">+               ret = cxgbe_copy_rx_pkt(q, rxq, len, &pkt);</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">+               if (unlikely(ret))</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">+                   break;</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue'; min-height: 15px;"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;"> </span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">                cxgbe_fill_mbuf_info(q->adapter, cpl, pkt);</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue'; min-height: 15px;"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;"> </span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">@@ -2379,6 +2449,7 @@ int t4_sge_init(struct adapter *adap)</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">    sge_control = t4_read_reg(adap, A_SGE_CONTROL);</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">    s->pktshift = G_PKTSHIFT(sge_control);</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">    s->stat_len = (sge_control & F_EGRSTATUSPAGESIZE) ? 128 : 64;</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">+   s->fl_align = cxgbe_fl_pkt_align(adap);</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">    ret = t4_sge_init_soft(adap);</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">    if (ret < 0) {</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">        dev_err(adap, "%s: t4_sge_init_soft failed, error %d\n",</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">@@ -2516,6 +2587,7 @@ int t4vf_sge_init(struct adapter *adap)</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">    s->stat_len = ((sge_control & F_EGRSTATUSPAGESIZE)</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">            ? 128 : 64);</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">    s->pktshift = G_PKTSHIFT(sge_control);</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">+   s->fl_align = RTE_CACHE_LINE_SIZE;</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue'; min-height: 15px;"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;"> </span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">    /*</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">    * A FL with <= fl_starve_thres buffers is starving and a periodic</span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">-- </span></p>
<p style="margin: 0px 0px 0px 0px; font: 13px 'helvetica neue';"><span style="font-size: 11pt; font-family: 'arial' , 'helvetica' , sans-serif;">2.39.5</span></p>
</div>
</blockquote>
</div>
</div></div>
</div></body></html>