linux/drivers/net/usb
Matthias-Christian Ott ca506fca46 net: usb: pegasus: Do not drop long Ethernet frames
The D-Link DSB-650TX (2001:4002) is unable to receive Ethernet frames
that are longer than 1518 octets, for example, Ethernet frames that
contain 802.1Q VLAN tags.

The frames are sent to the pegasus driver via USB but the driver
discards them because they have the Long_pkt field set to 1 in the
received status report. The function read_bulk_callback of the pegasus
driver treats such received "packets" (in the terminology of the
hardware) as errors but the field simply does just indicate that the
Ethernet frame (MAC destination to FCS) is longer than 1518 octets.

It seems that in the 1990s there was a distinction between
"giant" (> 1518) and "runt" (< 64) frames and the hardware includes
flags to indicate this distinction. It seems that the purpose of the
distinction "giant" frames was to not allow infinitely long frames due
to transmission errors and to allow hardware to have an upper limit of
the frame size. However, the hardware already has such limit with its
2048 octet receive buffer and, therefore, Long_pkt is merely a
convention and should not be treated as a receive error.

Actually, the hardware is even able to receive Ethernet frames with 2048
octets which exceeds the claimed limit frame size limit of the driver of
1536 octets (PEGASUS_MTU).

Fixes: 1da177e4c3 ("Linux-2.6.12-rc2")
Signed-off-by: Matthias-Christian Ott <ott@mirix.org>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: David S. Miller <davem@davemloft.net>
2021-12-27 14:52:06 +00:00
..
Kconfig lan78xx: select CRC32 2021-10-15 14:34:35 +01:00
Makefile r8153_ecm: avoid to be prior to r8152 driver 2020-11-19 08:23:46 -08:00
aqc111.c ethernet: constify references to netdev->dev_addr in drivers 2021-10-14 09:22:11 -07:00
aqc111.h
asix.h net: usb: asix: ax88772: move embedded PHY detection as early as possible 2021-08-23 12:39:41 +01:00
asix_common.c asix: fix wrong return value in asix_check_host_enable() 2021-12-22 14:52:18 -08:00
asix_devices.c net: usb: use eth_hw_addr_set() 2021-10-02 14:18:25 +01:00
ax88172a.c net: usb: use eth_hw_addr_set() 2021-10-02 14:18:25 +01:00
ax88179_178a.c ethernet: constify references to netdev->dev_addr in drivers 2021-10-14 09:22:11 -07:00
catc.c usbb: catc: use correct API for MAC addresses 2021-10-25 15:34:02 +01:00
cdc-phonet.c net: remove single-byte netdev->dev_addr writes 2021-10-13 10:03:59 -07:00
cdc_eem.c net: cdc_eem: fix tx fixup skb leak 2021-06-17 11:30:25 -07:00
cdc_ether.c net: usb: Fix spelling mistakes 2021-06-01 17:05:05 -07:00
cdc_mbim.c net: usb: cdc_mbim: avoid altsetting toggling for Telit LN920 2021-09-02 13:27:11 +01:00
cdc_ncm.c net: cdc_ncm: Allow for dwNtbOutMaxSize to be unset or zero 2021-12-03 16:56:02 -08:00
cdc_subset.c
ch9200.c net: usb: don't write directly to netdev->dev_addr 2021-10-22 10:16:01 -07:00
cx82310_eth.c net: usb: don't write directly to netdev->dev_addr 2021-10-22 10:16:01 -07:00
dm9601.c ethernet: constify references to netdev->dev_addr in drivers 2021-10-14 09:22:11 -07:00
gl620a.c
hso.c net: hso: fix muxed tty registration 2021-09-17 11:19:58 +01:00
huawei_cdc_ncm.c usb: class: cdc-wdm: WWAN framework integration 2021-05-11 16:17:56 -07:00
int51x1.c net: usb: Fix spelling mistakes 2021-06-01 17:05:05 -07:00
ipheth.c net: usb: use eth_hw_addr_set() 2021-10-02 14:18:25 +01:00
kalmia.c net: usb: use eth_hw_addr_set() 2021-10-02 14:18:25 +01:00
kaweth.c net: usb: don't write directly to netdev->dev_addr 2021-10-22 10:16:01 -07:00
lan78xx.c net: usb: lan78xx: add Allied Telesis AT29M2-AF 2021-12-15 19:06:14 -08:00
lan78xx.h
lg-vl600.c net: usb: Fix spelling mistakes 2021-06-01 17:05:05 -07:00
mcs7830.c net: usb: don't write directly to netdev->dev_addr 2021-10-22 10:16:01 -07:00
net1080.c net: usb: net1080: Remove in_interrupt() comment 2020-09-29 14:02:54 -07:00
pegasus.c net: usb: pegasus: Do not drop long Ethernet frames 2021-12-27 14:52:06 +00:00
pegasus.h
plusb.c
qmi_wwan.c net: usb: qmi_wwan: add Telit 0x1070 composition 2021-12-10 21:22:20 -08:00
r8152.c r8152: sync ocp base 2021-12-23 09:56:06 -08:00
r8153_ecm.c r8153_ecm: Add Lenovo Powered USB-C Hub as a fallback of r8152 2021-01-12 20:00:51 -08:00
rndis_host.c net: usb: use eth_hw_addr_set() instead of ether_addr_copy() 2021-10-02 14:18:25 +01:00
rtl8150.c net: usb: use eth_hw_addr_set() for dev->addr_len cases 2021-10-05 13:16:48 +01:00
sierra_net.c net: usb: don't write directly to netdev->dev_addr 2021-10-22 10:16:01 -07:00
smsc75xx.c usb: smsc: use eth_hw_addr_set() 2021-10-22 10:15:56 -07:00
smsc75xx.h
smsc95xx.c net: usb: Correct PHY handling of smsc95xx 2021-11-23 12:24:41 +00:00
smsc95xx.h
sr9700.c net: usb: don't write directly to netdev->dev_addr 2021-10-22 10:16:01 -07:00
sr9700.h
sr9800.c net: usb: don't write directly to netdev->dev_addr 2021-10-22 10:16:01 -07:00
sr9800.h
usbnet.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2021-10-28 10:43:58 -07:00
zaurus.c