[Differential] [Request, 21 lines] D5167: hyperv/hn: Move LRO flush to the channel processing rollup

sepherosa_gmail.com (Sepherosa Ziehau) phabric-noreply at FreeBSD.org
Tue Feb 2 10:27:11 UTC 2016


sepherosa_gmail.com created this revision.
sepherosa_gmail.com added reviewers: network, adrian, delphij, royger, decui_microsoft.com, honzhan_microsoft.com, howard0su_gmail.com.
sepherosa_gmail.com added a subscriber: freebsd-net-list.

REVISION SUMMARY
  This significantly increases LRO aggregation ratio when there are large amount of connections (improves reception performance a lot).

REVISION DETAIL
  https://reviews.freebsd.org/D5167

AFFECTED FILES
  sys/dev/hyperv/netvsc/hv_netvsc_drv_freebsd.c

CHANGE DETAILS
  diff --git a/sys/dev/hyperv/netvsc/hv_netvsc_drv_freebsd.c b/sys/dev/hyperv/netvsc/hv_netvsc_drv_freebsd.c
  --- a/sys/dev/hyperv/netvsc/hv_netvsc_drv_freebsd.c
  +++ b/sys/dev/hyperv/netvsc/hv_netvsc_drv_freebsd.c
  @@ -764,6 +764,15 @@
   netvsc_channel_rollup(struct hv_device *device_ctx)
   {
   	struct hn_softc *sc = device_get_softc(device_ctx->device);
  +#if defined(INET) || defined(INET6)
  +	struct lro_ctrl *lro = &sc->hn_lro;
  +	struct lro_entry *queued;
  +
  +	while ((queued = SLIST_FIRST(&lro->lro_active)) != NULL) {
  +		SLIST_REMOVE_HEAD(&lro->lro_active, next);
  +		tcp_lro_flush(lro, queued);
  +	}
  +#endif
   
   	if (!sc->hn_txeof)
   		return;
  @@ -1338,18 +1347,8 @@
   }
   
   void
  -netvsc_recv_rollup(struct hv_device *device_ctx)
  +netvsc_recv_rollup(struct hv_device *device_ctx __unused)
   {
  -#if defined(INET) || defined(INET6)
  -	hn_softc_t *sc = device_get_softc(device_ctx->device);
  -	struct lro_ctrl *lro = &sc->hn_lro;
  -	struct lro_entry *queued;
  -
  -	while ((queued = SLIST_FIRST(&lro->lro_active)) != NULL) {
  -		SLIST_REMOVE_HEAD(&lro->lro_active, next);
  -		tcp_lro_flush(lro, queued);
  -	}
  -#endif
   }
   
   /*

EMAIL PREFERENCES
  https://reviews.freebsd.org/settings/panel/emailpreferences/

To: sepherosa_gmail.com, network, adrian, delphij, royger, decui_microsoft.com, honzhan_microsoft.com, howard0su_gmail.com
Cc: freebsd-net-list
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D5167.12948.patch
Type: text/x-patch
Size: 1107 bytes
Desc: not available
URL: <http://lists.freebsd.org/pipermail/freebsd-net/attachments/20160202/9582d0bc/attachment.bin>


More information about the freebsd-net mailing list