Author: sephe
Date: Fri Feb  5 05:44:31 2016
New Revision: 295305
URL: https://svnweb.freebsd.org/changeset/base/295305

Log:
  hyperv/hn: Move LRO flush to the channel processing rollup
  
  This significantly increases LRO aggregation ratio when there are
  large amount of connections (improves reception performance a lot).
  
  Reviewed by:  adrian
  Approved by:  adrian (mentor)
  MFC after:    1 week
  Sponsored by: Microsoft OSTC
  Differential Revision:        https://reviews.freebsd.org/D5167

Modified:
  head/sys/dev/hyperv/netvsc/hv_netvsc_drv_freebsd.c

Modified: head/sys/dev/hyperv/netvsc/hv_netvsc_drv_freebsd.c
==============================================================================
--- head/sys/dev/hyperv/netvsc/hv_netvsc_drv_freebsd.c  Fri Feb  5 05:38:01 
2016        (r295304)
+++ head/sys/dev/hyperv/netvsc/hv_netvsc_drv_freebsd.c  Fri Feb  5 05:44:31 
2016        (r295305)
@@ -764,6 +764,15 @@ void
 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 @@ skip:
 }
 
 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
 }
 
 /*
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to