forked from luck/tmp_suning_uos_patched
usb: gadget: u_ether: Fix MTU size mismatch with RX packet size
commit 0a88fa221ce911c331bf700d2214c5b2f77414d3 upstream.
Fix the MTU size issue with RX packet size as the host sends the packet
with extra bytes containing ethernet header. This causes failure when
user sets the MTU size to the maximum i.e. 15412. In this case the
ethernet packet received will be of length 15412 plus the ethernet header
length. This patch fixes the issue where there is a check that RX packet
length must not be more than max packet length.
Fixes: bba787a860
("usb: gadget: ether: Allow jumbo frames")
Signed-off-by: Manish Narani <manish.narani@xilinx.com>
Cc: stable <stable@vger.kernel.org>
Link: https://lore.kernel.org/r/1605597215-122027-1-git-send-email-manish.narani@xilinx.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
e698e1478b
commit
9cc6bf99c6
|
@ -45,9 +45,10 @@
|
|||
#define UETH__VERSION "29-May-2008"
|
||||
|
||||
/* Experiments show that both Linux and Windows hosts allow up to 16k
|
||||
* frame sizes. Set the max size to 15k+52 to prevent allocating 32k
|
||||
* frame sizes. Set the max MTU size to 15k+52 to prevent allocating 32k
|
||||
* blocks and still have efficient handling. */
|
||||
#define GETHER_MAX_ETH_FRAME_LEN 15412
|
||||
#define GETHER_MAX_MTU_SIZE 15412
|
||||
#define GETHER_MAX_ETH_FRAME_LEN (GETHER_MAX_MTU_SIZE + ETH_HLEN)
|
||||
|
||||
struct eth_dev {
|
||||
/* lock is held while accessing port_usb
|
||||
|
@ -786,7 +787,7 @@ struct eth_dev *gether_setup_name(struct usb_gadget *g,
|
|||
|
||||
/* MTU range: 14 - 15412 */
|
||||
net->min_mtu = ETH_HLEN;
|
||||
net->max_mtu = GETHER_MAX_ETH_FRAME_LEN;
|
||||
net->max_mtu = GETHER_MAX_MTU_SIZE;
|
||||
|
||||
dev->gadget = g;
|
||||
SET_NETDEV_DEV(net, &g->dev);
|
||||
|
@ -848,7 +849,7 @@ struct net_device *gether_setup_name_default(const char *netname)
|
|||
|
||||
/* MTU range: 14 - 15412 */
|
||||
net->min_mtu = ETH_HLEN;
|
||||
net->max_mtu = GETHER_MAX_ETH_FRAME_LEN;
|
||||
net->max_mtu = GETHER_MAX_MTU_SIZE;
|
||||
|
||||
return net;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user