mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-15 08:14:15 +08:00
Merge branch 'net-dsa-b53-assorted-jumbo-frame-fixes'
Jonas Gorski says: ==================== net: dsa: b53: assorted jumbo frame fixes While investigating the capabilities of BCM63XX's integrated switch and its DMA engine, I noticed a few issues in b53's jumbo frame code. Mostly a confusion of MTU vs frame length, but also a few missing cases for 100M switches. Tested on BCM63XX and BCM53115 with intel 1G and realtek 1G NICs, which support MTUs of 9000 or slightly above, but significantly less than the 9716/9720 supported by BCM53115, so I couldn't verify the actual maximum frame length. Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com> --- ==================== Link: https://patch.msgid.link/20241004-b53_jumbo_fixes-v1-0-ce1e54aa7b3c@gmail.com Signed-off-by: Paolo Abeni <pabeni@redhat.com>
This commit is contained in:
commit
f15b8d6eb6
@ -27,6 +27,7 @@
|
||||
#include <linux/phylink.h>
|
||||
#include <linux/etherdevice.h>
|
||||
#include <linux/if_bridge.h>
|
||||
#include <linux/if_vlan.h>
|
||||
#include <net/dsa.h>
|
||||
|
||||
#include "b53_regs.h"
|
||||
@ -224,6 +225,9 @@ static const struct b53_mib_desc b53_mibs_58xx[] = {
|
||||
|
||||
#define B53_MIBS_58XX_SIZE ARRAY_SIZE(b53_mibs_58xx)
|
||||
|
||||
#define B53_MAX_MTU_25 (1536 - ETH_HLEN - VLAN_HLEN - ETH_FCS_LEN)
|
||||
#define B53_MAX_MTU (9720 - ETH_HLEN - VLAN_HLEN - ETH_FCS_LEN)
|
||||
|
||||
static int b53_do_vlan_op(struct b53_device *dev, u8 op)
|
||||
{
|
||||
unsigned int i;
|
||||
@ -2254,20 +2258,25 @@ static int b53_change_mtu(struct dsa_switch *ds, int port, int mtu)
|
||||
bool allow_10_100;
|
||||
|
||||
if (is5325(dev) || is5365(dev))
|
||||
return -EOPNOTSUPP;
|
||||
return 0;
|
||||
|
||||
if (!dsa_is_cpu_port(ds, port))
|
||||
return 0;
|
||||
|
||||
enable_jumbo = (mtu >= JMS_MIN_SIZE);
|
||||
allow_10_100 = (dev->chip_id == BCM583XX_DEVICE_ID);
|
||||
enable_jumbo = (mtu > ETH_DATA_LEN);
|
||||
allow_10_100 = !is63xx(dev);
|
||||
|
||||
return b53_set_jumbo(dev, enable_jumbo, allow_10_100);
|
||||
}
|
||||
|
||||
static int b53_get_max_mtu(struct dsa_switch *ds, int port)
|
||||
{
|
||||
return JMS_MAX_SIZE;
|
||||
struct b53_device *dev = ds->priv;
|
||||
|
||||
if (is5325(dev) || is5365(dev))
|
||||
return B53_MAX_MTU_25;
|
||||
|
||||
return B53_MAX_MTU;
|
||||
}
|
||||
|
||||
static const struct phylink_mac_ops b53_phylink_mac_ops = {
|
||||
|
Loading…
Reference in New Issue
Block a user