Page MenuHomeFreeBSD

D8293.id21522.diff
No OneTemporary

D8293.id21522.diff

Index: sys/dev/hyperv/netvsc/hv_net_vsc.h
===================================================================
--- sys/dev/hyperv/netvsc/hv_net_vsc.h
+++ sys/dev/hyperv/netvsc/hv_net_vsc.h
@@ -269,6 +269,7 @@
#define HN_CAP_UDP6CS 0x0040
#define HN_CAP_TSO4 0x0080
#define HN_CAP_TSO6 0x0100
+#define HN_CAP_HASHVAL 0x0200
/*
* Externs
Index: sys/dev/hyperv/netvsc/hv_net_vsc.c
===================================================================
--- sys/dev/hyperv/netvsc/hv_net_vsc.c
+++ sys/dev/hyperv/netvsc/hv_net_vsc.c
@@ -544,8 +544,9 @@
if (error) {
if_printf(sc->hn_ifp, "reinit NVS version 0x%x "
"failed: %d\n", sc->hn_nvs_ver, error);
+ return (error);
}
- return (error);
+ goto done;
}
/*
@@ -567,11 +568,16 @@
HN_NDIS_VERSION_MAJOR(sc->hn_ndis_ver),
HN_NDIS_VERSION_MINOR(sc->hn_ndis_ver));
}
- return (0);
+ goto done;
}
}
if_printf(sc->hn_ifp, "no NVS available\n");
return (ENXIO);
+
+done:
+ if (sc->hn_nvs_ver >= HN_NVS_VERSION_5)
+ sc->hn_caps |= HN_CAP_HASHVAL;
+ return (0);
}
int
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
@@ -3008,12 +3008,15 @@
if (sc->hn_caps & HN_CAP_UDP6CS)
csum_assist |= CSUM_IP6_UDP;
#endif
-
for (i = 0; i < sc->hn_tx_ring_cnt; ++i)
sc->hn_tx_ring[i].hn_csum_assist = csum_assist;
- if (sc->hn_ndis_ver >= HN_NDIS_VERSION_6_30) {
- /* Support HASHVAL pktinfo on TX path. */
+ if (sc->hn_caps & HN_CAP_HASHVAL) {
+ /*
+ * Support HASHVAL pktinfo on TX path.
+ */
+ if (bootverbose)
+ if_printf(sc->hn_ifp, "support HASHVAL pktinfo\n");
for (i = 0; i < sc->hn_tx_ring_cnt; ++i)
sc->hn_tx_ring[i].hn_tx_flags |= HN_TX_FLAG_HASHVAL;
}

File Metadata

Mime Type
text/plain
Expires
Tue, Dec 30, 4:20 AM (3 h, 18 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
27375541
Default Alt Text
D8293.id21522.diff (1 KB)

Event Timeline