hyperv/hn: Make sure that RNDIS packet message is at least 4B aligned.
MFC after: 1 week Sponsored by: Microsoft Differential Revision: https://reviews.freebsd.org/D9713
This commit is contained in:
parent
8fe90f73ae
commit
7675868a04
@ -841,9 +841,22 @@ hn_rndis_init(struct hn_softc *sc)
|
|||||||
sc->hn_rndis_agg_pkts = comp->rm_pktmaxcnt;
|
sc->hn_rndis_agg_pkts = comp->rm_pktmaxcnt;
|
||||||
sc->hn_rndis_agg_align = 1U << comp->rm_align;
|
sc->hn_rndis_agg_align = 1U << comp->rm_align;
|
||||||
|
|
||||||
|
if (sc->hn_rndis_agg_align < sizeof(uint32_t)) {
|
||||||
|
/*
|
||||||
|
* The RNDIS packet messsage encap assumes that the RNDIS
|
||||||
|
* packet message is at least 4 bytes aligned. Fix up the
|
||||||
|
* alignment here, if the remote side sets the alignment
|
||||||
|
* too low.
|
||||||
|
*/
|
||||||
|
if_printf(sc->hn_ifp, "fixup RNDIS aggpkt align: %u -> %zu\n",
|
||||||
|
sc->hn_rndis_agg_align, sizeof(uint32_t));
|
||||||
|
sc->hn_rndis_agg_align = sizeof(uint32_t);
|
||||||
|
}
|
||||||
|
|
||||||
if (bootverbose) {
|
if (bootverbose) {
|
||||||
if_printf(sc->hn_ifp, "RNDIS ver %u.%u, pktsz %u, pktcnt %u, "
|
if_printf(sc->hn_ifp, "RNDIS ver %u.%u, "
|
||||||
"align %u\n", comp->rm_ver_major, comp->rm_ver_minor,
|
"aggpkt size %u, aggpkt cnt %u, aggpkt align %u\n",
|
||||||
|
comp->rm_ver_major, comp->rm_ver_minor,
|
||||||
sc->hn_rndis_agg_size, sc->hn_rndis_agg_pkts,
|
sc->hn_rndis_agg_size, sc->hn_rndis_agg_pkts,
|
||||||
sc->hn_rndis_agg_align);
|
sc->hn_rndis_agg_align);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user