Page MenuHomeFreeBSD

D7924.id20422.diff
No OneTemporary

D7924.id20422.diff

Index: sys/dev/hyperv/netvsc/hv_netvsc_drv_freebsd.c
===================================================================
--- sys/dev/hyperv/netvsc/hv_netvsc_drv_freebsd.c
+++ sys/dev/hyperv/netvsc/hv_netvsc_drv_freebsd.c
@@ -435,6 +435,8 @@
struct ndis_rssprm_toeplitz *rss = &sc->hn_rss;
int i;
+ KASSERT(nchan > 1, ("invalid # of channels %d", nchan));
+
/*
* Check indirect table to make sure that all channels in it
* can be used.
@@ -2145,7 +2147,12 @@
if (error)
goto back;
- error = hn_rss_reconfig(sc);
+ if (sc->hn_rx_ring_inuse > 1) {
+ error = hn_rss_reconfig(sc);
+ } else {
+ /* Not RSS capable, at least for now; just save the RSS key. */
+ error = 0;
+ }
back:
HN_UNLOCK(sc);
return (error);
@@ -2163,6 +2170,15 @@
if (error || req->newptr == NULL)
goto back;
+ /*
+ * Don't allow RSS indirect table change, if this interface is not
+ * RSS capable currently.
+ */
+ if (sc->hn_rx_ring_inuse == 1) {
+ error = EOPNOTSUPP;
+ goto back;
+ }
+
error = SYSCTL_IN(req, sc->hn_rss.rss_ind, sizeof(sc->hn_rss.rss_ind));
if (error)
goto back;

File Metadata

Mime Type
text/plain
Expires
Mon, Nov 10, 4:24 PM (21 m, 27 s)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
25113289
Default Alt Text
D7924.id20422.diff (1 KB)

Event Timeline