History log of /freebsd-11-stable/sys/dev/hyperv/netvsc/if_hnvar.h
Revision Date Author Comments
# 324578 13-Oct-2017 sephe

MFC 324489,324516

324489
hyperv/hn: Workaround erroneous hash type observed on WS2016.

Background:
- UDP 4-tuple hash type is unconditionally enabled in Hyper-V on WS2016,
which is _not_ affected by NDIS_OBJTYPE_RSS_PARAMS.
- Non-fragment UDP/IPv4 datagrams' hash type is delivered to VM as
TCP_IPV4.

Currently this erroneous behavior only applies to WS2016/Windows10.

Force l3/l4 protocol check, if the RXed packet's hash type is TCP_IPV4,
and the Hyper-V is running on WS2016/Windows10. If the RXed packet is
UDP datagram, adjust mbuf hash type to UDP_IPV4.

Sponsored by: Microsoft

324516
hyperv/hn: Workaround erroneous hash type observed on WS2016 for VF.

The background was described in r324489.

Sponsored by: Microsoft


# 324477 10-Oct-2017 sephe

MFC 323728,323729

323728
hyperv/hn: Fix MTU setting

- Add size of an ethernet header to the value configured to NVS. This
does not seem to have any effects if MTU is 1500, but fix hypervisor
side's setting if MTU > 1500.
- Override the MTU setting according to the view from the hypervisor
side.

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D12352

323729
hyperv/hn: Incease max supported MTU

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D12365


# 324475 10-Oct-2017 sephe

MFC 323727,324316

323727
hyperv/hn: Apply VF's RSS setting

Since in Azure SYN and SYN|ACK go through the synthetic parts while the
rest of the same TCP flow goes through the VF, apply VF's RSS settings
to synthetic parts to have a consistent hash value/type for the same TCP
flow.

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D12333

324316
hyperv/hn: Fix options RSS building

Reported by: np
Sponsored by: Microsoft


# 322612 17-Aug-2017 sephe

MFC 322488
hyperv: Update copyright for the files changed in 2017

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D11982


# 322605 17-Aug-2017 sephe

MFC 322483,322485-322487

322483
hyperv/hn: Update VF's ibytes properly under transparent VF mode.

While, I'm here add comment about why updating VF's imcast stat is
not necessary.

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D11948

322485
hyperv/hn: Fix/enhance receiving path when VF is activated.

- Update hn(4)'s stats properly for non-transparent mode VF.
- Allow BPF tapping to hn(4) for non-transparent mode VF.
- Don't setup mbuf hash, if 'options RSS' is set.
In Azure, when VF is activated, TCP SYN and SYN|ACK go through hn(4)
while the rest of segments and ACKs belonging to the same TCP 4-tuple
go through the VF. So don't setup mbuf hash, if a VF is activated
and 'options RSS' is not enabled. hn(4) and the VF may use neither
the same RSS hash key nor the same RSS hash function, so the hash
value for packets belonging to the same flow could be different!
- Disable LRO.
hn(4) will only receive broadcast packets, multicast packets, TCP
SYN and SYN|ACK (in Azure), LRO is useless for these packet types.
For non-transparent, we definitely _cannot_ enable LRO at all, since
the LRO flush will use hn(4) as the receiving interface; i.e.
hn_ifp->if_input(hn_ifp, m).

While I'm here, remove unapplied comment and minor style change.

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D11978

322486
hyperv/hn: Minor cleanup

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D11979

322487
hyperv/hn: Re-set datapath after synthetic parts reattached.

Do this even for non-transparent mode VF. Better safe than sorry.

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D11981


# 322489 14-Aug-2017 sephe

MFC 322299

hyperv/hn: Implement transparent mode network VF.

How network VF works with hn(4) on Hyper-V in transparent mode:

- Each network VF has a cooresponding hn(4).
- The network VF and the it's cooresponding hn(4) have the same hardware
address.
- Once the network VF is attached, the cooresponding hn(4) waits several
seconds to make sure that the network VF attach routing completes, then:
o Set the intersection of the network VF's if_capabilities and the
cooresponding hn(4)'s if_capabilities to the cooresponding hn(4)'s
if_capabilities. And adjust the cooresponding hn(4) if_capable and
if_hwassist accordingly. (*)
o Make sure that the cooresponding hn(4)'s TSO parameters meet the
constraints posed by both the network VF and the cooresponding hn(4).
(*)
o The network VF's if_input is overridden. The overriding if_input
changes the input packet's rcvif to the cooreponding hn(4). The
network layers are tricked into thinking that all packets are
neceived by the cooresponding hn(4).
o If the cooresponding hn(4) was brought up, bring up the network VF.
The transmission dispatched to the cooresponding hn(4) are
redispatched to the network VF.
o Bringing down the cooresponding hn(4) also brings down the network
VF.
o All IOCTLs issued to the cooresponding hn(4) are pass-through'ed to
the network VF; the cooresponding hn(4) changes its internal state
if necessary.
o The media status of the cooresponding hn(4) solely relies on the
network VF.
o If there are multicast filters on the cooresponding hn(4), allmulti
will be enabled on the network VF. (**)
- Once the network VF is detached. Undo all damages did to the
cooresponding hn(4) in the above item.

NOTE:
No operation should be issued directly to the network VF, if the
network VF transparent mode is enabled. The network VF transparent mode
can be enabled by setting tunable hw.hn.vf_transparent to 1. The network
VF transparent mode is _not_ enabled by default, as of this commit.

The benefit of the network VF transparent mode is that the network VF
attachment and detachment are transparent to all network layers; e.g. live
migration detaches and reattaches the network VF.

The major drawbacks of the network VF transparent mode:
- The netmap(4) support is lost, even if the VF supports it.
- ALTQ does not work, since if_start method cannot be properly supported.

(*)
These decisions were made so that things will not be messed up too much
during the transition period.

(**)
This does _not_ need to go through the fancy multicast filter management
stuffs like what vlan(4) has, at least currently:
- As of this write, multicast does not work in Azure.
- As of this write, multicast packets go through the cooresponding hn(4).

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D11803


# 322135 07-Aug-2017 sephe

MFC 321836,321837

321836
hyperv/hn: Renaming and minor cleanup

This prepares for the upcoming transparent VF support.

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D11708

321837
hyperv/hn: Add comment about ether_ifattach event subscription.

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D11710


# 321748 31-Jul-2017 sephe

MFC 321407

hyperv/hn: Export VF list and VF-HN mapping

The VF-HN map will be used later on to implement "transparent VF".

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D11618


# 314091 22-Feb-2017 dexuan

MFC 312688

Approved by: sephe (mentor)

r312688
hyperv/hn: add the support for VF drivers (SR-IOV)

Hyper-V's NIC SR-IOV implementation needs a Hyper-V synthetic NIC and
a VF NIC to work together (both NICs have the same MAC address), mainly to
support seamless live migration.

When the VF device becomes UP (or DOWN), the synthetic NIC driver needs
to switch the data path from the synthetic NIC to the VF (or the opposite).

Note: multicast/broadcast packets are still received through the synthetic
NIC and we need to inject the packets through the VF interface (if the VF is
UP), even if the synthetic NIC is DOWN (so we need to force the rxfilter
to be NDIS_PACKET_TYPE_PROMISCUOUS, when the VF is UP).

Reviewed by: sephe
Approved by: sephe (mentor)
Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D8964


# 314083 22-Feb-2017 dexuan

MFC: 312685

Approved by: sephe(mentor)

r312685
hyperv/hn: remember the channel pointer in struct hn_rx_ring

This will be used by the coming NIC SR-IOV patch.

Reviewed by: sephe
Approved by: sephe (mentor)
Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D8909


# 311375 05-Jan-2017 sephe

MFC 309874,309875

309874
hyperv/vmbus: Add channel polling support.

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D8738

309875
hyperv/hn: Add polling support

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D8739


# 311368 05-Jan-2017 sephe

MFC 309310,309311,309316,309318

309310
hyperv/hn: Nuke the unused TX taskqueue CPU binding tunable.

It was an experimental tunable, and is now deemed to be road blocker
for further changes. Time to retire it.

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D8654

309311
hyperv/hn: Allow multiple TX taskqueues.

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D8655

309316
hyperv/vmbus: Add DEVMETHOD to map cpu to event taskq.

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D8658

309318
hyperv/hn: Allow TX to share event taskqueues.

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D8659


# 311365 05-Jan-2017 sephe

MFC 309226-309231,309235

309226
hyperv/hn: Utilize vmbus_chan_xact_wait

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D8612

309227
hyperv/hn: Fix detach error handling.

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D8613

309228
hyperv/hn: Fix multi-packet RNDIS message aggregation size setting.

Just in case that no chimney sending buffer can be used.

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D8619

309229
hyperv/hn: Fix attach error handling

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D8620

309230
hyperv/hn: Enable multi-packet RNDIS message support by default.

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D8621

309231
hyperv/hn: Fix vmbus_chan_subidx usage.

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D8629

309235
hyperv/hn: Simplify RSS indirect table fixup API

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D8630


# 311357 05-Jan-2017 sephe

MFC 308907

hyperv/hn: Fix WITNESS warnings

And re-enable SIOCADDMULTI/SIOCDELMULTI, after WITNESS warning is fixed.

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D8489


# 311355 05-Jan-2017 sephe

MFC 308905

hyperv/hn: Implement RNDIS multi-packet message support.

Currently, it is only applied to packet sent through chimney sending
buffers. Not enabled by default yet.

This one gives 20%~30% performance boost for non-TSO usage in both
bit/packet rate tests and nginx performance test.

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D8560


# 308628 13-Nov-2016 sephe

MFC 308117-308120

308117
hyperv/hn: Rework temporary channel packet buffer expanding.

And use large default temporary channel packer buffer; we really
don't want it to be expanded at run time.

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D8367

308118
hyperv/hn: Cleanup RXBUF ack processing.

- Increase the # of retries.
- Add comment.
- Log error, if RXBUF ack fails.
- Add stat for RXBUF ack failures.

RXBUF ack really should _not_ fail...

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D8368

308119
hyperv/hn: Reset do_lro, if the hash types are not TCP related.

Mainly because the host side only set TCPCS and IPCS even for
UDP datagrams.

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D8369

308120
hyperv/hn: Don't start shared TX taskq, if the hypervisor is not Hyper-V.

- Move the SYSINIT to DRIVER/SECOND, i.e. after the vm_guest becomes
determistic.
- Minor style changes.

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D8370


# 308626 13-Nov-2016 sephe

MFC 308013-308017

308013
hyperv/hn: Nuke unnecessary indirection.

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D8355

308014
hyperv/hn: Reorganize RX path; mainly pull non-control code path up

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D8356

308015
hyperv/hn: Pull data path code up.

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D8357

308016
hyperv/hn: Cleanup RNDIS related files.

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D8358

308017
hyperv/hn: Change header guardian; in preparation for the upcoming rename.

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D8359


# 308624 13-Nov-2016 sephe

MFC 307989-307991,308010

307989
hyperv/hn: Move hn_softc to if_hnvar.h

While I'm here, use consistent macro names.

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D8345

307990
hyperv/hn: Move send context to NVS domain.

Since all sends are encapsulated in NVS messages.

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D8346

307991
hyperv/hn: NVS inclusion cleanup and forward declare functions.

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D8347

308010
hyperv/hn: Change header guardian; in preparation for the upcoming rename.

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D8352


# 308623 13-Nov-2016 sephe

MFC 307985-307988

307985
hyperv/hn: Nuke unnecessary M_NETVSC

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D8340

307986
hyperv/hn: Move %b format string for capabilities near their definition.

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D8341

307987
hyperv/hn: Define empty packet filter.

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D8342

307988
hyperv/hn: Shuffle chimney sending buffer alloc/free around.

This paves way for more chimney sending buffer reorganization.

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D8343


# 308522 11-Nov-2016 sephe

MFC 307844

hyperv/hn: Nuke unused forward declaration.

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D8314


# 308519 11-Nov-2016 sephe

MFC 307838,307839

307838
hyperv/hn: Move chimney buffer index and size to txdesc.

All RNDIS control messages have used SG list for a while. This makes
the send context suitable for further refactoring.

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D8308

307839
hyperv/hn: Fix chimney sending buffer leakage upon NVS sending failure.

This will not happen in real world, since TX consumption of the vmbus
TX bufring is limitted. Better safe than sorry.

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D8309


# 308518 11-Nov-2016 sephe

MFC 307710-307712,307714

307710
hyperv/hn: Always query RSS capabilities.

- This avoid distributing NDIS version check.
- Only NDIS 6.20 required (earlier NDIS uses different indirect table
format).

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D8291

307711
hyperv/hn: Check NVS version for HASHVAL pktinfo on sending path.

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D8293

307712
hyperv/hn: Add network change support.

Currently the network change is simulated by link status changes.

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D8295

307714
hyperv/hn: Function renaming; consistent w/ hardware capabilities query.

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D8296


# 307614 19-Oct-2016 sephe

MFC 307012,307013,307262

307012
hyperv/vmbus: Allow driver to inject synchronous task into channel taskq.

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D8208

307013
hyperv/hn: Rework link status support.

This is the preamble for network device SR-IOV and
NDIS_STATUS_NETWORK_CHANGE handling.

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D8209

307262
hyperv/hn: Management parts always need suspend and resume.

Sponsored by: Microsoft


# 307613 19-Oct-2016 sephe

MFC 306936-306939

306936
hyperv/hn: Fix checksum offload settings

The _correct_ way to identify the supported checksum offloading and
TSO parameters is to query OID_TCP_OFFLOAD_HARDWARE_CAPABILITIES.

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D8088

306937
hyperv/hn: Fix if_hw_tsomax setup.

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D8089

306938
hyperv/hn: Generalize RSS capabilities query.

- Support NDIS < 6.30.
- Stringent response checks.

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D8090

306939
hyperv/hn: Suffix NDIS offload size with NDIS version.

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D8091


# 307604 18-Oct-2016 sephe

MFC 306393

hyperv/hn: Flatten RX filter configuration.

This paves way for more fixes.

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D8049


# 307603 18-Oct-2016 sephe

MFC 306390-306392

306390
hyperv/hn: Suspend and resume the backend properly upon MTU change.

Suspend:
- Prevent the backend from being touched on TX path.
- Clear the RNDIS RX filter, and wait for RX to drain.
- Make sure that NVS see the chimney sending buffer and RXBUF
disconnection, before unlink these buffers from the channel.

Resume:
- Reconfigure the RNDIS filter.
- Allow TX path to work on the backend.
- Kick start the TX eof task, in case the OACTIVE is set.

This fixes various panics, when the interface has traffic and MTU
is being changed.

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D8046

306391
hyperv/hn: Reorganize the synthetic parts detach.

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D8047

306392
hyperv/hn: Reorder the comment a little bit.

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D8048


# 307516 17-Oct-2016 sephe

MFC 305925,305926,305960

305925
hyperv/hn: Don't mess up RSS key and indirect table after attachment.

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D7889

305926
hyperv/hn: Add sysctls to dynamic adjust RSS key and indirect table

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D7890

305960
hyperv/hn: Apply RSS indirect table fixup before configure RNDIS RSS.

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D7916


# 307508 17-Oct-2016 sephe

MFC 305724,305725,305727-305730,305760,305761,305763,305788

305724
hyperv/hn: Rename RXBUF connect/disconnect functions.

Minor cleanup and wording in error messages.

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D7823

305725
hyperv/hn: Rename chimney sending buffer connect/disconnect functions.

Minor cleanup and wording in error messages.

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D7825

305727
hyperv/hn: Function rename.

- Minor style changes.
- Nuke unnecessary indirection.
- Nuke unapplied comment.

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D7827

305728
hyperv/hn: Reorganize sub-channel allocation.

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D7829

305729
hyperv/hn: Reorganize RNDIS attach

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D7830

305730
hyperv/hn: Pull ether address and link status extraction up.

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D7831

305760
hyperv/hn: Reorganize channel attach/detach code.

This paves the way for further attach/detach code reorganization.

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D7858

305761
hyperv/hn: Regroup synthetic parts attach code.

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D7859

305763
hyperv/hn: Reorganize synthetic parts attach code.

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D7860

305788
hyperv/hn: Pull RSS key and indirect table setup up.

This paves the way for the dynamic RSS key and indirect table setting.

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D7864


# 307500 17-Oct-2016 sephe

MFC 305454,305455,305521,305524-305526

305454
hyperv/hn: Fix VLAN tag setup for outgoing VLAN packets.

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D7785

305455
hyperv/hn: Avoid bit fields for LSOv2 setup.

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D7786

305521
hyperv/hn: Avoid bit fields for TXCSUM setup.

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D7792

305524
hyperv/hn: Cleanup RNDIS packet message encapsulation.

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D7793

305525
hyperv/hn: Simplify per-packet-info construction.

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D7794

305526
hyperv/hn: Nuke unused bits

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D7795


# 307495 17-Oct-2016 sephe

MFC 305175,305176,305179,305182,305268,305270,305276

305175
net/rndis: Define per-packet-info for RNDIS packet message

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D7708

305176
hyperv/hn: Stringent per-packet-info verification.

While I'm here, minor style changes.

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D7709

305179
hyperv/hn: Fix VLAN tag construction.

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D7716

305182
net/rndis: Define types for RNDIS pktinfo rm_type field.

They are defined by NDIS spec, so the NDIS prefix.

Reviewed by: hps
Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D7717

305268
hyperv/hn: Rework RXCSUM related bits

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D7735

305270
hyperv/hn: Simplify RX hash related bits.

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D7736

305276
hyperv/hn: Use the per-packet-info types defined by net/rndis.h

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D7737


# 307492 17-Oct-2016 sephe

MFC 305052-305054,305110

305052
hyperv/hn: Remove the useless rndis_device and related bits

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D7687

305053
hyperv/hn: Log packet message alignment.

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D7689

305054
hyperv/hn: Remove unnecessary NULL check.

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D7690

305110
hyperv/hn: Consolidate NVS transaction execution.

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D7704


# 307491 17-Oct-2016 sephe

MFC 305049,305050

305049
hyperv/hn: Factor out func to exec RNDIS transaction w/o checking result

It will be used by RNDIS HALT and RESET.

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D7685

305050
hyperv/hn: Switch to new RNDIS transaction execution for halt.

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D7686


# 307484 17-Oct-2016 sephe

MFC 304783-304785

304783
hyperv/hn: Use definition in net/rndis.h for message type and status code.

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D7620

304784
hyperv/hn: Add compat code for RNDIS reorganization phase.

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D7621

304785
hyperv/hn: Use vmbus xact for RNDIS initialize.

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D7624


# 307480 17-Oct-2016 sephe

MFC 304441,304444,304446,304447,304591,304593-304595

304441
hyperv/hn: Move NVS version to softc

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D7553

304444
hyperv/hn: Remove assign-only struct field

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D7554

304446
hyperv/hn: Remove the useless num_channel

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D7555

304447
hyperv/hn: Move RXBUF to hn_softc

And don't recreate RXBUF for each primary channel open, it is now
created in device_attach DEVMETHOD and destroyed in device_detach
DEVMETHOD.

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D7556

304591
hyperv/hn: Move chimney sending buffer to hn_softc

And don't recreate chimney sending buffer for each primary channel
open, it is now created in device_attach DEVMETHOD and destroyed
in device_detach DEVMETHOD.

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D7574

304593
hyperv/hn: Get rid of netvsc_dev

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D7575

304594
hyperv/hn: Factor out function to execute NVS transactions.

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D7577

304595
hyperv/hn: Factor out function to simplify NVS request sending

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D7578


# 307478 17-Oct-2016 sephe

MFC 304327,304329,304330

304327
hyperv/hn: Pass RX packet info to netvsc_recv.

This paves to nuke netvsc_packet, which does not serves much
purpose now.

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D7541

304329
hyperv/hn: Constify RNDIS messages on RX path.

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D7542

304330
hyperv/hn: Get rid of the useless netvsc_packet

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D7544


# 307476 17-Oct-2016 sephe

MFC 304204-304206,304252-304256

304204
hyperv/hn: Factor out hn_nvs_send/hn_nvs_send_sglist

Avoid unnecessary message type setting and centralize the send context
to transaction id cast.

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D7500

304205
hyperv/hn: Simplify RNDIS NVS message sending.

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D7501

304206
hyperv/hn: Simplify RNDIS message checks on RX path.

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D7502

304252
hyperv/hn: Ignore the useless TX table.

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D7514

304253
hyperv/hn: Simplify RNDIS RX packets acknowledgement.

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D7515

304254
hyperv/hn: Remove reference to nvsp_msg

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D7516

304255
hyperv/hn: Remove reference to nvsp_status

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D7517

304256
hyperv/hn: Get rid of unused bits

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D7518


# 307475 16-Oct-2016 sephe

MFC 303945,303947-303949,303989,303992,303998,304001,304002,304109,304111

303945
hyperv/vmbus: Add macro to get channel packet data length.

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D7455

303947
hyperv/vmbus: Add APIs for various types of transactions.

Reviewed by: Jun Su <junsu microsoft com>
Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D7456

303948
hyperv/hn: Switch to vmbus xact APIs for NVS initialization

Reviewed by: Jun Su <junsu microsoft com>
Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D7457

303949
hyperv/vmbus: Use xact APIs to implement post message Hypercall APIs

Avoid code duplication.

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D7458

303989
hyperv/hn: Simplify NDIS configuration.

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D7466

303992
hyperv/hn: Simplify NDIS initialization.

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D7467

303998
hyperv/hn: Switch to vmbus xact APIs for NVS RXBUF connection.

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D7469

304001
hyperv/hn: Switch to vmbus xact APIs for NVS chimney buffer connection.

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D7470

304002
hyperv/hn: Simplify RXBUF disconnection.

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D7472

304109
hyperv/hn: Simplify chimney sending buffer disconnection.

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D7479

304111
hyperv/hn: Switch to vmbus xact APIs for sub-channel alloc request.

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D7480


# 307473 16-Oct-2016 sephe

MFC 303867,303901

303867
hyperv/hn: Move gpa array out of netvsc_packet.

Prepare to deprecate the netvsc_packet.

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D7436

303901
hyperv/hn: Reorganize send done callback.

Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D7450