aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/xen
diff options
context:
space:
mode:
authorDoug Rabson <dfr@FreeBSD.org>2023-08-12 13:19:47 +0000
committerDoug Rabson <dfr@FreeBSD.org>2023-10-20 10:50:20 +0000
commitda4b0d6eb06d730487d48e15d2d5e10c56266fd9 (patch)
tree817e7644c1985ae57ff2c8fdee98dc3cba556aa3 /sys/dev/xen
parentca57a343e86ed3015596db68bda17518ad45436a (diff)
Diffstat (limited to 'sys/dev/xen')
-rw-r--r--sys/dev/xen/netfront/netfront.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/sys/dev/xen/netfront/netfront.c b/sys/dev/xen/netfront/netfront.c
index b4e7722552e6..dafb838cf328 100644
--- a/sys/dev/xen/netfront/netfront.c
+++ b/sys/dev/xen/netfront/netfront.c
@@ -2272,7 +2272,7 @@ int
create_netdev(device_t dev)
{
struct netfront_info *np;
- int err;
+ int err, cap_enabled;
if_t ifp;
np = device_get_softc(dev);
@@ -2304,7 +2304,11 @@ create_netdev(device_t dev)
if_sethwassist(ifp, XN_CSUM_FEATURES);
/* Enable all supported features at device creation. */
if_setcapabilities(ifp, IFCAP_HWCSUM|IFCAP_TSO4|IFCAP_LRO);
- if_setcapenable(ifp, if_getcapabilities(ifp));
+ cap_enabled = if_getcapabilities(ifp);
+ if (!xn_enable_lro) {
+ cap_enabled &= ~IFCAP_LRO;
+ }
+ if_setcapenable(ifp, cap_enabled);
if_sethwtsomax(ifp, 65536 - (ETHER_HDR_LEN + ETHER_VLAN_ENCAP_LEN));
if_sethwtsomaxsegcount(ifp, MAX_TX_REQ_FRAGS);