Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F149332791
D7871.id20295.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
3 KB
Referenced Files
None
Subscribers
None
D7871.id20295.diff
View Options
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
@@ -318,8 +318,12 @@
#endif
static int hn_trust_hcsum_sysctl(SYSCTL_HANDLER_ARGS);
static int hn_chim_size_sysctl(SYSCTL_HANDLER_ARGS);
-static int hn_rx_stat_ulong_sysctl(SYSCTL_HANDLER_ARGS);
+#if __FreeBSD_version < 1100095
+static int hn_rx_stat_int_sysctl(SYSCTL_HANDLER_ARGS);
+#else
static int hn_rx_stat_u64_sysctl(SYSCTL_HANDLER_ARGS);
+#endif
+static int hn_rx_stat_ulong_sysctl(SYSCTL_HANDLER_ARGS);
static int hn_tx_stat_ulong_sysctl(SYSCTL_HANDLER_ARGS);
static int hn_tx_conf_int_sysctl(SYSCTL_HANDLER_ARGS);
static int hn_ndis_version_sysctl(SYSCTL_HANDLER_ARGS);
@@ -1866,32 +1870,33 @@
return 0;
}
+#if __FreeBSD_version < 1100095
static int
-hn_rx_stat_ulong_sysctl(SYSCTL_HANDLER_ARGS)
+hn_rx_stat_int_sysctl(SYSCTL_HANDLER_ARGS)
{
struct hn_softc *sc = arg1;
int ofs = arg2, i, error;
struct hn_rx_ring *rxr;
- u_long stat;
+ uint64_t stat;
stat = 0;
- for (i = 0; i < sc->hn_rx_ring_inuse; ++i) {
+ for (i = 0; i < sc->hn_rx_ring_cnt; ++i) {
rxr = &sc->hn_rx_ring[i];
- stat += *((u_long *)((uint8_t *)rxr + ofs));
+ stat += *((int *)((uint8_t *)rxr + ofs));
}
- error = sysctl_handle_long(oidp, &stat, 0, req);
+ error = sysctl_handle_64(oidp, &stat, 0, req);
if (error || req->newptr == NULL)
return error;
/* Zero out this stat. */
- for (i = 0; i < sc->hn_rx_ring_inuse; ++i) {
+ for (i = 0; i < sc->hn_rx_ring_cnt; ++i) {
rxr = &sc->hn_rx_ring[i];
- *((u_long *)((uint8_t *)rxr + ofs)) = 0;
+ *((int *)((uint8_t *)rxr + ofs)) = 0;
}
return 0;
}
-
+#else
static int
hn_rx_stat_u64_sysctl(SYSCTL_HANDLER_ARGS)
{
@@ -1918,6 +1923,34 @@
return 0;
}
+#endif
+
+static int
+hn_rx_stat_ulong_sysctl(SYSCTL_HANDLER_ARGS)
+{
+ struct hn_softc *sc = arg1;
+ int ofs = arg2, i, error;
+ struct hn_rx_ring *rxr;
+ u_long stat;
+
+ stat = 0;
+ for (i = 0; i < sc->hn_rx_ring_inuse; ++i) {
+ rxr = &sc->hn_rx_ring[i];
+ stat += *((u_long *)((uint8_t *)rxr + ofs));
+ }
+
+ error = sysctl_handle_long(oidp, &stat, 0, req);
+ if (error || req->newptr == NULL)
+ return error;
+
+ /* Zero out this stat. */
+ for (i = 0; i < sc->hn_rx_ring_inuse; ++i) {
+ rxr = &sc->hn_rx_ring[i];
+ *((u_long *)((uint8_t *)rxr + ofs)) = 0;
+ }
+ return 0;
+}
+
static int
hn_tx_stat_ulong_sysctl(SYSCTL_HANDLER_ARGS)
{
@@ -2168,11 +2201,21 @@
SYSCTL_ADD_PROC(ctx, child, OID_AUTO, "lro_queued",
CTLTYPE_U64 | CTLFLAG_RW | CTLFLAG_MPSAFE, sc,
__offsetof(struct hn_rx_ring, hn_lro.lro_queued),
- hn_rx_stat_u64_sysctl, "LU", "LRO queued");
+#if __FreeBSD_version < 1100095
+ hn_rx_stat_int_sysctl,
+#else
+ hn_rx_stat_u64_sysctl,
+#endif
+ "LU", "LRO queued");
SYSCTL_ADD_PROC(ctx, child, OID_AUTO, "lro_flushed",
CTLTYPE_U64 | CTLFLAG_RW | CTLFLAG_MPSAFE, sc,
__offsetof(struct hn_rx_ring, hn_lro.lro_flushed),
- hn_rx_stat_u64_sysctl, "LU", "LRO flushed");
+#if __FreeBSD_version < 1100095
+ hn_rx_stat_int_sysctl,
+#else
+ hn_rx_stat_u64_sysctl,
+#endif
+ "LU", "LRO flushed");
SYSCTL_ADD_PROC(ctx, child, OID_AUTO, "lro_tried",
CTLTYPE_ULONG | CTLFLAG_RW | CTLFLAG_MPSAFE, sc,
__offsetof(struct hn_rx_ring, hn_lro_tried),
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Tue, Mar 24, 7:48 PM (5 h, 31 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
30268307
Default Alt Text
D7871.id20295.diff (3 KB)
Attached To
Mode
D7871: hyperv/hn: Bring in shims from stable/10
Attached
Detach File
Event Timeline
Log In to Comment