svn commit: r366245 - head/sys/dev/cxgbe

Navdeep Parhar np at FreeBSD.org
Tue Sep 29 07:51:07 UTC 2020


Author: np
Date: Tue Sep 29 07:51:06 2020
New Revision: 366245
URL: https://svnweb.freebsd.org/changeset/base/366245

Log:
  cxgbe(4): adjust the doorbell threshold for netmap freelists to match the
  maximum burst size used when fetching descriptors from the list.
  
  MFC after:	1 week
  Sponsored by:	Chelsio Communications

Modified:
  head/sys/dev/cxgbe/adapter.h
  head/sys/dev/cxgbe/t4_netmap.c

Modified: head/sys/dev/cxgbe/adapter.h
==============================================================================
--- head/sys/dev/cxgbe/adapter.h	Tue Sep 29 07:36:21 2020	(r366244)
+++ head/sys/dev/cxgbe/adapter.h	Tue Sep 29 07:51:06 2020	(r366245)
@@ -730,6 +730,7 @@ struct sge_nm_rxq {
 	uint32_t fl_sidx2;	/* copy of fl_sidx */
 	uint32_t fl_db_val;
 	u_int fl_db_saved;
+	u_int fl_db_threshold;	/* in descriptors */
 	u_int fl_hwidx:4;
 
 	/*

Modified: head/sys/dev/cxgbe/t4_netmap.c
==============================================================================
--- head/sys/dev/cxgbe/t4_netmap.c	Tue Sep 29 07:36:21 2020	(r366244)
+++ head/sys/dev/cxgbe/t4_netmap.c	Tue Sep 29 07:51:06 2020	(r366245)
@@ -196,6 +196,9 @@ alloc_nm_rxq_hwq(struct vi_info *vi, struct sge_nm_rxq
 
 	nm_rxq->fl_cntxt_id = be16toh(c.fl0id);
 	nm_rxq->fl_pidx = nm_rxq->fl_cidx = 0;
+	nm_rxq->fl_db_saved = 0;
+	/* matches the X_FETCHBURSTMAX_512B or X_FETCHBURSTMAX_256B above. */
+	nm_rxq->fl_db_threshold = chip_id(sc) <= CHELSIO_T5 ? 8 : 4;
 	MPASS(nm_rxq->fl_sidx == na->num_rx_desc);
 	cntxt_id = nm_rxq->fl_cntxt_id - sc->sge.eq_start;
 	if (cntxt_id >= sc->sge.neq) {
@@ -1063,7 +1066,7 @@ cxgbe_netmap_rxsync(struct netmap_kring *kring, int fl
 				fl_pidx = 0;
 				slot = &ring->slot[0];
 			}
-			if (++dbinc == 8 && n >= 32) {
+			if (++dbinc == nm_rxq->fl_db_threshold) {
 				wmb();
 				if (starve_fl)
 					nm_rxq->fl_db_saved += dbinc;


More information about the svn-src-head mailing list