On 12/18/20 1:14 PM, Vladimir Oltean wrote: > On Fri, Dec 18, 2020 at 01:08:58PM -0800, Florian Fainelli wrote: >> On 12/18/20 1:02 PM, Vladimir Oltean wrote: >>> On Fri, Dec 18, 2020 at 12:54:33PM -0800, Florian Fainelli wrote: >>>> On 12/18/20 12:52 PM, Vladimir Oltean wrote: >>>>> On Fri, Dec 18, 2020 at 12:30:20PM -0800, Florian Fainelli wrote: >>>>>> On 12/18/20 12:24 PM, Vladimir Oltean wrote: >>>>>>> Hi Florian, >>>>>>> >>>>>>> On Fri, Dec 18, 2020 at 09:38:43AM -0800, Florian Fainelli wrote: >>>>>>>> The driver is already allocating receive buffers of 2KiB and the >>>>>>>> Ethernet MAC is configured to accept frames up to UMAC_MAX_MTU_SIZE. >>>>>>>> >>>>>>>> Fixes: bfcb813203e6 ("net: dsa: configure the MTU for switch ports") >>>>>>>> Signed-off-by: Florian Fainelli <f.faine...@gmail.com> >>>>>>>> --- >>>>>>>> drivers/net/ethernet/broadcom/bcmsysport.c | 1 + >>>>>>>> 1 file changed, 1 insertion(+) >>>>>>>> >>>>>>>> diff --git a/drivers/net/ethernet/broadcom/bcmsysport.c >>>>>>>> b/drivers/net/ethernet/broadcom/bcmsysport.c >>>>>>>> index 0fdd19d99d99..b1ae9eb8f247 100644 >>>>>>>> --- a/drivers/net/ethernet/broadcom/bcmsysport.c >>>>>>>> +++ b/drivers/net/ethernet/broadcom/bcmsysport.c >>>>>>>> @@ -2577,6 +2577,7 @@ static int bcm_sysport_probe(struct >>>>>>>> platform_device *pdev) >>>>>>>> NETIF_F_HW_VLAN_CTAG_TX; >>>>>>>> dev->hw_features |= dev->features; >>>>>>>> dev->vlan_features |= dev->features; >>>>>>>> + dev->max_mtu = UMAC_MAX_MTU_SIZE; >>>>>>>> >>>>>>>> /* Request the WOL interrupt and advertise suspend if available >>>>>>>> */ >>>>>>>> priv->wol_irq_disabled = 1; >>>>>>>> -- >>>>>>>> 2.25.1 >>>>>>>> >>>>>>> >>>>>>> Do you want to treat the SYSTEMPORT Lite differently? >>>>>>> >>>>>>> /* Set maximum frame length */ >>>>>>> if (!priv->is_lite) >>>>>>> umac_writel(priv, UMAC_MAX_MTU_SIZE, >>>>>>> UMAC_MAX_FRAME_LEN); >>>>>>> else >>>>>>> gib_set_pad_extension(priv); >>>>>> >>>>>> SYSTEMPORT Lite does not actually validate the frame length, so setting >>>>>> a maximum number to the buffer size we allocate could work, but I don't >>>>>> see a reason to differentiate the two types of MACs here. >>>>> >>>>> And if the Lite doesn't validate the frame length, then shouldn't it >>>>> report a max_mtu equal to the max_mtu of the attached DSA switch, plus >>>>> the Broadcom tag length? Doesn't the b53 driver support jumbo frames? >>>> >>>> And how would I do that without create a horrible layering violation in >>>> either the systemport driver or DSA? Yes the b53 driver supports jumbo >>>> frames. >>> >>> Sorry, I don't understand where is the layering violation (maybe it doesn't >>> help me either that I'm not familiar with Broadcom architectures). >>> >>> Is the SYSTEMPORT Lite always used as a DSA master, or could it also be >>> used standalone? What would be the issue with hardcoding a max_mtu value >>> which is large enough for b53 to use jumbo frames? >> >> SYSTEMPORT Lite is always used as a DSA master AFAICT given its GMII >> Integration Block (GIB) was specifically designed with another MAC and >> particularly that of a switch on the other side. >> >> The layering violation I am concerned with is that we do not know ahead >> of time which b53 switch we are going to be interfaced with, and they >> have various limitations on the sizes they support. Right now b53 only >> concerns itself with returning JMS_MAX_SIZE, but I am fairly positive >> this needs fixing given the existing switches supported by the driver. > > Maybe we don't need to over-engineer this. As long as you report a large > enough max_mtu in the SYSTEMPORT Lite driver to accomodate for all > possible revisions of embedded switches, and the max_mtu of the switch > itself is still accurate and representative of the switch revision limits, > I think that's good enough.
I suppose that is fair, v2 coming, thanks! -- Florian