HomeFreeBSD

MFC 294701,294702,294703,294705,294788

Description

MFC 294701,294702,294703,294705,294788

294701

hyperv/hn: Use m_copydata for chimney sending.

While I'm here, move stack variables near their usage.

Reviewed by:                adrian, delphij, Jun Su <junsu microsoft com>
Approved by:                adrian (mentor)
Sponsored by:               Microsoft OSTC
Differential Revision:      https://reviews.freebsd.org/D4977

294702

hyperv/hn: Remove unnecessary zeroing out the netvsc_packet

All used fields are setup one by one, so there is no need to zero
out this large struct.

While I'm here, move the stack variable near its usage.

Reviewed by:                adrian, delphij, Jun Su <junsu microsoft com>
Approved by:                adrian (mentor)
Sponsored by:               Microsoft OSTC
Differential Revision:      https://reviews.freebsd.org/D4978

294703

hyperv/hn: Trust host TCP segment checksum verification by default.

According to all available information, VMSWITCH always does the
TCP segment checksum verification before sending the segment to
guest.

Reviewed by:                adrian, delphij, Hongjiang Zhang <honzhan microsoft com>
Approved by:                adrian (mentor)
Sponsored by:               Microsoft OSTC
Differential Revision:      https://reviews.freebsd.org/D4991

294705

hyperv/vmbus: Avoid extra copy of page information.

The page information array could contain up to 32 elements (i.e. 512B).
And on network side w/ TSO, 11+ (176B+) elements, i.e. ~44K TSO packet,
in the page information array is quite common.

This saves us some cpu cycles.

Reviewed by:                adrian, delphij
Approved by:                adrian (mentor)
Sponsored by:               Microsoft OSTC
Differential Revision:      https://reviews.freebsd.org/D4992

294788

hyperv/hn: Improve sending performance

- Avoid main lock contention by trylock for if_start, if that fails,
  schedule TX taskqueue for if_start
- Don't do direct sending if the packet to be sent is large, e.g.
  TSO packet.

This change gives me stable 9.1Gbps TCP sending performance w/ TSO
over a 10Gbe directly connected network (the performance fluctuated
between 4Gbps and 9Gbps before this commit). It also improves non-
TSO TCP sending performance a lot.

Reviewed by:                adrian, royger
Approved by:                adrian (mentor)
Sponsored by:               Microsoft OSTC
Differential Revision:      https://reviews.freebsd.org/D5074

Details

Provenance
sepheAuthored on
Parents
rS301849: [mips] set hardfloat for fpu instruction generation for gcc/binutils 5.x
Branches
Unknown
Tags
Unknown