Procházet zdrojové kódy

core: Increase the gso max size for rmnet

Some drivers in kernel could not handle packets larger than the gso
max size and they were going into a bad state when such packets
were delivered to the driver. While linux tcp stack honors the gso
max size, there are other methods in the kernel which could send
packets larger than gso max size to drivers.

To handle this, a change was added in kernel to instead segment packets
via gso to mss size before sending it to the driver through commit
24ab059d2ebd ("net: check dev->gso_max_size in gso_features_check()").

gso max size is 64k for rmnet as that is the maximum size which
hardware can support. As TCP tries to send 65k size TSO packets,
these ended up getting segmented by network stack prior to reaching
rmnet driver.

To work around this change, increase the rmnet maximum gso size to
65k. Rmnet supports segmenting such packets in SW already, so it ends
up segmenting 65k packets to ~63K + ~1K to honor the IPA 64K packet
size limitation.

CRs-Fixed: 3816885
Change-Id: If7c959f1106a8e744e28510d93b35c8790ac897c
Signed-off-by: Subash Abhinov Kasiviswanathan <[email protected]>
Subash Abhinov Kasiviswanathan před 9 měsíci
rodič
revize
f583657405
1 změnil soubory, kde provedl 2 přidání a 2 odebrání
  1. 2 2
      core/rmnet_vnd.c

+ 2 - 2
core/rmnet_vnd.c

@@ -1,5 +1,5 @@
 /* Copyright (c) 2013-2021, The Linux Foundation. All rights reserved.
- * Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved.
+ * Copyright (c) 2021-2024 Qualcomm Innovation Center, Inc. All rights reserved.
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License version 2 and
@@ -748,7 +748,7 @@ int rmnet_vnd_newlink(u8 id, struct net_device *rmnet_dev,
 
 	priv->real_dev = real_dev;
 
-	rmnet_dev->gso_max_size = 64000;
+	rmnet_dev->gso_max_size = 65535;
 
 	rc = register_netdevice(rmnet_dev);
 	if (!rc) {