From: Matthias-Christian Ott <ott@mirix.org>
To: Andrew Lunn <andrew@lunn.ch>
Cc: Petko Manolov <petkan@nucleusys.com>,
linux-usb@vger.kernel.org, netdev@vger.kernel.org
Subject: Re: [PATCH] net: usb: pegasus: Do not drop long Ethernet frames
Date: Sun, 26 Dec 2021 17:01:24 +0100 [thread overview]
Message-ID: <a87c4ea5-72ef-8dd3-de98-01f799d627ef@mirix.org> (raw)
In-Reply-To: <YciMrJBDk6bA5+Nv@lunn.ch>
On 26/12/2021 16:39, Andrew Lunn wrote:
> On Sun, Dec 26, 2021 at 02:29:30PM +0100, Matthias-Christian Ott wrote:
>> 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).
>>
>> Signed-off-by: Matthias-Christian Ott <ott@mirix.org>
>> ---
>> drivers/net/usb/pegasus.c | 4 ++--
>> 1 file changed, 2 insertions(+), 2 deletions(-)
>>
>> diff --git a/drivers/net/usb/pegasus.c b/drivers/net/usb/pegasus.c
>> index 140d11ae6688..2582daf23015 100644
>> --- a/drivers/net/usb/pegasus.c
>> +++ b/drivers/net/usb/pegasus.c
>> @@ -499,11 +499,11 @@ static void read_bulk_callback(struct urb *urb)
>> goto goon;
>>
>> rx_status = buf[count - 2];
>> - if (rx_status & 0x1e) {
>> + if (rx_status & 0x1c) {
>> netif_dbg(pegasus, rx_err, net,
>> "RX packet error %x\n", rx_status);
>> net->stats.rx_errors++;
>> - if (rx_status & 0x06) /* long or runt */
>> + if (rx_status & 0x04) /* runt */
>
> I've nothing against this patch, but if you are working on the driver,
> it would be nice to replace these hex numbers with #defines using BIT,
> or FIELD. It will make the code more readable.
Replacing the constants with macros is on my list of things that I want
to do. In this case, I did not do it because I wanted to a have small
patch that gets easily accepted and allows me to figure out the current
process to submit patches after years of inactivity.
Kind regards,
Matthias-Christian Ott
next prev parent reply other threads:[~2021-12-26 16:01 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-12-26 13:29 [PATCH] net: usb: pegasus: Do not drop long Ethernet frames Matthias-Christian Ott
2021-12-26 15:39 ` Andrew Lunn
2021-12-26 16:01 ` Matthias-Christian Ott [this message]
2021-12-26 16:31 ` Andrew Lunn
2021-12-26 22:21 ` Matthias-Christian Ott
2021-12-26 22:28 ` Petko Manolov
2021-12-27 9:56 ` Sergei Shtylyov
2022-01-02 14:22 ` Matthias-Christian Ott
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=a87c4ea5-72ef-8dd3-de98-01f799d627ef@mirix.org \
--to=ott@mirix.org \
--cc=andrew@lunn.ch \
--cc=linux-usb@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=petkan@nucleusys.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox