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