diff options
author | 2016-09-23 13:28:07 +0000 | |
---|---|---|
committer | 2016-09-23 13:28:07 +0000 | |
commit | 246a3689b5bdfbc989860b189825e8baaa24b719 (patch) | |
tree | 23b2c09a359366494ff9715283955285ea84ab99 | |
parent | With the new large socket buffer sizes, syslogd could use more mbufs (diff) | |
download | wireguard-openbsd-246a3689b5bdfbc989860b189825e8baaa24b719.tar.xz wireguard-openbsd-246a3689b5bdfbc989860b189825e8baaa24b719.zip |
Configure NDIS VLAN and MTU parameters for NVSP 2 and newer backends
-rw-r--r-- | sys/dev/pv/if_hvn.c | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/sys/dev/pv/if_hvn.c b/sys/dev/pv/if_hvn.c index e6edaad48e5..7008511ec2b 100644 --- a/sys/dev/pv/if_hvn.c +++ b/sys/dev/pv/if_hvn.c @@ -105,6 +105,10 @@ struct rndis_cmd { }; TAILQ_HEAD(rndis_queue, rndis_cmd); +#define HVN_MAXMTU (9 * 1024) + +#define HVN_RNDIS_XFER_SIZE 2048 + /* * Tx ring */ @@ -803,6 +807,7 @@ hvn_nvs_attach(struct hvn_softc *sc) struct hvn_nvs_init cmd; struct hvn_nvs_init_resp *rsp; struct hvn_nvs_ndis_init ncmd; + struct hvn_nvs_ndis_conf ccmd; uint64_t tid; uint32_t ndisver; int i; @@ -847,6 +852,17 @@ hvn_nvs_attach(struct hvn_softc *sc) return (-1); } + if (sc->sc_proto >= HVN_NVS_PROTO_VERSION_2) { + memset(&ccmd, 0, sizeof(ccmd)); + ccmd.nvs_type = HVN_NVS_TYPE_NDIS_CONF; + ccmd.nvs_mtu = HVN_MAXMTU; + ccmd.nvs_caps = HVN_NVS_NDIS_CONF_VLAN; + + tid = atomic_inc_int_nv(&sc->sc_nvstid); + if (hvn_nvs_cmd(sc, &ccmd, sizeof(ccmd), tid, 100)) + return (-1); + } + memset(&ncmd, 0, sizeof(ncmd)); ncmd.nvs_type = HVN_NVS_TYPE_NDIS_INIT; if (sc->sc_proto <= HVN_NVS_PROTO_VERSION_4) @@ -1136,7 +1152,7 @@ hvn_rndis_attach(struct hvn_softc *sc) req->rm_rid = rc->rc_id; req->rm_ver_major = RNDIS_VERSION_MAJOR; req->rm_ver_minor = RNDIS_VERSION_MINOR; - req->rm_max_xfersz = 2048; /* XXX */ + req->rm_max_xfersz = HVN_RNDIS_XFER_SIZE; rc->rc_cmplen = sizeof(*cmp); |