Message ID | 20231107-gemini-largeframe-fix-v3-1-e3803c080b75@linaro.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Fix large frames in the Gemini ethernet driver | expand |
On Tue, Nov 07, 2023 at 10:54:26AM +0100, Linus Walleij wrote: > The RX max frame size is over 10000 for the Gemini ethernet, > but the TX max frame size is actually just 2047 (0x7ff after > checking the datasheet). Reflect this in what we offer to Linux, > cap the MTU at the TX max frame minus ethernet headers. > > Use the BIT() macro for related bit flags so these TX settings > are consistent. What does this second paragraph intend to say? The patch doesn't use the BIT() macro.
On Wed, Nov 8, 2023 at 3:26 PM Vladimir Oltean <olteanv@gmail.com> wrote: > On Tue, Nov 07, 2023 at 10:54:26AM +0100, Linus Walleij wrote: > > The RX max frame size is over 10000 for the Gemini ethernet, > > but the TX max frame size is actually just 2047 (0x7ff after > > checking the datasheet). Reflect this in what we offer to Linux, > > cap the MTU at the TX max frame minus ethernet headers. > > > > Use the BIT() macro for related bit flags so these TX settings > > are consistent. > > What does this second paragraph intend to say? The patch doesn't use the > BIT() macro. Ah it's a leftover from v1 where I did some unrelated cleanup using BIT() but Andrew remarked on it so I dropped it. Maybe this twoliner in the commit message can be deleted when applying? Yours, Linus Walleij
On Wed, Nov 08, 2023 at 03:37:28PM +0100, Linus Walleij wrote: > On Wed, Nov 8, 2023 at 3:26 PM Vladimir Oltean <olteanv@gmail.com> wrote: > > On Tue, Nov 07, 2023 at 10:54:26AM +0100, Linus Walleij wrote: > > > > The RX max frame size is over 10000 for the Gemini ethernet, > > > but the TX max frame size is actually just 2047 (0x7ff after > > > checking the datasheet). Reflect this in what we offer to Linux, > > > cap the MTU at the TX max frame minus ethernet headers. > > > > > > Use the BIT() macro for related bit flags so these TX settings > > > are consistent. > > > > What does this second paragraph intend to say? The patch doesn't use the > > BIT() macro. > > Ah it's a leftover from v1 where I did some unrelated cleanup using > BIT() but Andrew remarked on it so I dropped it. > > Maybe this twoliner in the commit message can be deleted when > applying? I think it's better if you do it, there are some more minor fixups which you could bundle up with a new series.
diff --git a/drivers/net/ethernet/cortina/gemini.c b/drivers/net/ethernet/cortina/gemini.c index 5423fe26b4ef..ed9701f8ad9a 100644 --- a/drivers/net/ethernet/cortina/gemini.c +++ b/drivers/net/ethernet/cortina/gemini.c @@ -2464,11 +2464,12 @@ static int gemini_ethernet_port_probe(struct platform_device *pdev) netdev->hw_features = GMAC_OFFLOAD_FEATURES; netdev->features |= GMAC_OFFLOAD_FEATURES | NETIF_F_GRO; - /* We can handle jumbo frames up to 10236 bytes so, let's accept - * payloads of 10236 bytes minus VLAN and ethernet header + /* We can receive jumbo frames up to 10236 bytes but only + * transmit 2047 bytes so, let's accept payloads of 2047 + * bytes minus VLAN and ethernet header */ netdev->min_mtu = ETH_MIN_MTU; - netdev->max_mtu = 10236 - VLAN_ETH_HLEN; + netdev->max_mtu = MTU_SIZE_BIT_MASK - VLAN_ETH_HLEN; port->freeq_refill = 0; netif_napi_add(netdev, &port->napi, gmac_napi_poll); diff --git a/drivers/net/ethernet/cortina/gemini.h b/drivers/net/ethernet/cortina/gemini.h index 9fdf77d5eb37..201b4efe2937 100644 --- a/drivers/net/ethernet/cortina/gemini.h +++ b/drivers/net/ethernet/cortina/gemini.h @@ -502,7 +502,7 @@ union gmac_txdesc_3 { #define SOF_BIT 0x80000000 #define EOF_BIT 0x40000000 #define EOFIE_BIT BIT(29) -#define MTU_SIZE_BIT_MASK 0x1fff +#define MTU_SIZE_BIT_MASK 0x7ff /* Max MTU 2047 bytes */ /* GMAC Tx Descriptor */ struct gmac_txdesc {