Page MenuHomeFreeBSD

D56339.id175209.diff
No OneTemporary

D56339.id175209.diff

diff --git a/FreeBSD/sys/net/iflib.c b/FreeBSD/sys/net/iflib.c
--- a/FreeBSD/sys/net/iflib.c
+++ b/FreeBSD/sys/net/iflib.c
@@ -703,6 +703,7 @@
#endif
static __inline int iflib_completed_tx_reclaim(iflib_txq_t txq,
struct mbuf **m_defer);
+static __inline void iflib_completed_tx_reclaim_force(iflib_txq_t txq);
static SLIST_HEAD(cpu_offset_list, cpu_offset) cpu_offsets =
SLIST_HEAD_INITIALIZER(cpu_offsets);
@@ -3601,7 +3602,7 @@
* cxgb
*/
if (__predict_false(nsegs > TXQ_AVAIL(txq))) {
- (void)iflib_completed_tx_reclaim(txq, NULL);
+ iflib_completed_tx_reclaim_force(txq);
if (__predict_false(nsegs > TXQ_AVAIL(txq))) {
txq->ift_no_desc_avail++;
bus_dmamap_unload(buf_tag, map);
@@ -3790,6 +3805,20 @@
return (reclaim);
}
+/*
+ * Reclaim any transmit descriptors possible, ignoring coalescing
+ */
+static __inline void
+iflib_completed_tx_reclaim_force(iflib_txq_t txq)
+{
+ int reclaim;
+
+ iflib_tx_credits_update(txq->ift_ctx, txq);
+ reclaim = DESC_RECLAIMABLE(txq);
+ if (reclaim != 0)
+ _iflib_completed_tx_reclaim(txq, NULL, reclaim);
+}
+
static struct mbuf **
_ring_peek_one(struct ifmp_ring *r, int cidx, int offset, int remaining)
{

File Metadata

Mime Type
text/plain
Expires
Thu, May 14, 9:06 PM (6 h, 59 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
31253871
Default Alt Text
D56339.id175209.diff (1 KB)

Event Timeline