MFC: 277894
sfxge: implemented parameter to restrict RSS channels Submitted by: Artem V. Andreev <Artem.Andreev at oktetlabs.ru> Sponsored by: Solarflare Communications, Inc. Approved by: gnn (mentor)
This commit is contained in:
parent
9fb585d33c
commit
947d32c87f
@ -108,6 +108,10 @@ If a packet is dropped, the
|
||||
.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,
|
||||
|
@ -396,11 +396,18 @@ sfxge_create(struct sfxge_softc *sc)
|
||||
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)),
|
||||
|
@ -229,6 +229,7 @@ struct sfxge_softc {
|
||||
uint64_t ev_stats[EV_NQSTATS];
|
||||
#endif
|
||||
|
||||
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];
|
||||
|
@ -298,6 +298,9 @@ sfxge_intr_setup_msix(struct sfxge_softc *sc)
|
||||
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)
|
||||
|
Loading…
Reference in New Issue
Block a user