Page MenuHomeFreeBSD

D1706.id3485.diff
No OneTemporary

D1706.id3485.diff

Index: share/man/man4/sfxge.4
===================================================================
--- share/man/man4/sfxge.4
+++ share/man/man4/sfxge.4
@@ -108,6 +108,10 @@
.Va tx_early_drops
counter is incremented and the local sender receives ENOBUFS.
The value must be greater than or equal to 0.
+.It Va hw.sfxge.N.max_rss_channels
+The maximum number of allocated RSS channels for the Nth adapter.
+If set to 0 or unset, the number of channels is determined by the number
+of CPU cores.
.El
.Sh SUPPORT
For general information and support,
Index: sys/dev/sfxge/sfxge.h
===================================================================
--- sys/dev/sfxge/sfxge.h
+++ sys/dev/sfxge/sfxge.h
@@ -228,6 +228,7 @@
clock_t ev_stats_update_time;
uint64_t ev_stats[EV_NQSTATS];
+ unsigned int max_rss_channels;
uma_zone_t rxq_cache;
struct sfxge_rxq *rxq[SFXGE_RX_SCALE_MAX];
unsigned int rx_indir_table[SFXGE_RX_SCALE_MAX];
Index: sys/dev/sfxge/sfxge.c
===================================================================
--- sys/dev/sfxge/sfxge.c
+++ sys/dev/sfxge/sfxge.c
@@ -397,11 +397,18 @@
device_t dev;
efx_nic_t *enp;
int error;
+ char rss_param_name[sizeof(SFXGE_PARAM(%d.max_rss_channels))];
dev = sc->dev;
sx_init(&sc->softc_lock, "sfxge_softc");
+ sc->max_rss_channels = 0;
+ snprintf(rss_param_name, sizeof(rss_param_name),
+ SFXGE_PARAM(%d.max_rss_channels),
+ (int)device_get_unit(dev));
+ TUNABLE_INT_FETCH(rss_param_name, &sc->max_rss_channels);
+
sc->stats_node = SYSCTL_ADD_NODE(
device_get_sysctl_ctx(dev),
SYSCTL_CHILDREN(device_get_sysctl_tree(dev)),
Index: sys/dev/sfxge/sfxge_intr.c
===================================================================
--- sys/dev/sfxge/sfxge_intr.c
+++ sys/dev/sfxge/sfxge_intr.c
@@ -303,6 +303,9 @@
if (count > EFX_MAXRSS)
count = EFX_MAXRSS;
+ if (sc->max_rss_channels > 0 && count > sc->max_rss_channels)
+ count = sc->max_rss_channels;
+
rid = PCIR_BAR(4);
resp = bus_alloc_resource_any(dev, SYS_RES_MEMORY, &rid, RF_ACTIVE);
if (resp == NULL)

File Metadata

Mime Type
text/plain
Expires
Sat, Apr 4, 8:03 PM (5 h, 32 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
30839966
Default Alt Text
D1706.id3485.diff (2 KB)

Event Timeline