mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-11 12:28:41 +08:00
net: dsa: microchip: fix KSZ87xx family structure wrt the datasheet
The KSZ87xx switches have 32 static MAC address table entries and not 8. This fixes -ENOSPC non-critical errors from ksz8_add_sta_mac when configured as a bridge. Add a new ksz87xx_dev_ops structure to be able to use the ksz_r_mib_stat64 pointer for this family; this corrects a wrong mib->counters cast to ksz88xx_stats_raw. This fixes iproute2 statistics. Rename ksz8_dev_ops structure to ksz88x3_dev_ops, in line with ksz_is_* naming conventions from ksz_common.h. Signed-off-by: Pieter Van Trappen <pieter.van.trappen@cern.ch> Acked-by: Arun Ramadoss <arun.ramadoss@microchip.com> Link: https://patch.msgid.link/20240813142750.772781-6-vtpieter@gmail.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
90b06ac065
commit
0d3edc90c4
@ -277,7 +277,7 @@ static const struct phylink_mac_ops ksz8_phylink_mac_ops = {
|
||||
.mac_link_up = ksz8_phylink_mac_link_up,
|
||||
};
|
||||
|
||||
static const struct ksz_dev_ops ksz8_dev_ops = {
|
||||
static const struct ksz_dev_ops ksz88x3_dev_ops = {
|
||||
.setup = ksz8_setup,
|
||||
.get_port_addr = ksz8_get_port_addr,
|
||||
.cfg_port_member = ksz8_cfg_port_member,
|
||||
@ -312,6 +312,41 @@ static const struct ksz_dev_ops ksz8_dev_ops = {
|
||||
.pme_pwrite8 = ksz8_pme_pwrite8,
|
||||
};
|
||||
|
||||
static const struct ksz_dev_ops ksz87xx_dev_ops = {
|
||||
.setup = ksz8_setup,
|
||||
.get_port_addr = ksz8_get_port_addr,
|
||||
.cfg_port_member = ksz8_cfg_port_member,
|
||||
.flush_dyn_mac_table = ksz8_flush_dyn_mac_table,
|
||||
.port_setup = ksz8_port_setup,
|
||||
.r_phy = ksz8_r_phy,
|
||||
.w_phy = ksz8_w_phy,
|
||||
.r_mib_cnt = ksz8_r_mib_cnt,
|
||||
.r_mib_pkt = ksz8_r_mib_pkt,
|
||||
.r_mib_stat64 = ksz_r_mib_stats64,
|
||||
.freeze_mib = ksz8_freeze_mib,
|
||||
.port_init_cnt = ksz8_port_init_cnt,
|
||||
.fdb_dump = ksz8_fdb_dump,
|
||||
.fdb_add = ksz8_fdb_add,
|
||||
.fdb_del = ksz8_fdb_del,
|
||||
.mdb_add = ksz8_mdb_add,
|
||||
.mdb_del = ksz8_mdb_del,
|
||||
.vlan_filtering = ksz8_port_vlan_filtering,
|
||||
.vlan_add = ksz8_port_vlan_add,
|
||||
.vlan_del = ksz8_port_vlan_del,
|
||||
.mirror_add = ksz8_port_mirror_add,
|
||||
.mirror_del = ksz8_port_mirror_del,
|
||||
.get_caps = ksz8_get_caps,
|
||||
.config_cpu_port = ksz8_config_cpu_port,
|
||||
.enable_stp_addr = ksz8_enable_stp_addr,
|
||||
.reset = ksz8_reset_switch,
|
||||
.init = ksz8_switch_init,
|
||||
.exit = ksz8_switch_exit,
|
||||
.change_mtu = ksz8_change_mtu,
|
||||
.pme_write8 = ksz8_pme_write8,
|
||||
.pme_pread8 = ksz8_pme_pread8,
|
||||
.pme_pwrite8 = ksz8_pme_pwrite8,
|
||||
};
|
||||
|
||||
static void ksz9477_phylink_mac_link_up(struct phylink_config *config,
|
||||
struct phy_device *phydev,
|
||||
unsigned int mode,
|
||||
@ -1262,12 +1297,12 @@ const struct ksz_chip_data ksz_switch_chips[] = {
|
||||
.dev_name = "KSZ8795",
|
||||
.num_vlans = 4096,
|
||||
.num_alus = 0,
|
||||
.num_statics = 8,
|
||||
.num_statics = 32,
|
||||
.cpu_ports = 0x10, /* can be configured as cpu port */
|
||||
.port_cnt = 5, /* total cpu and user ports */
|
||||
.num_tx_queues = 4,
|
||||
.num_ipms = 4,
|
||||
.ops = &ksz8_dev_ops,
|
||||
.ops = &ksz87xx_dev_ops,
|
||||
.phylink_mac_ops = &ksz8_phylink_mac_ops,
|
||||
.ksz87xx_eee_link_erratum = true,
|
||||
.mib_names = ksz9477_mib_names,
|
||||
@ -1303,12 +1338,12 @@ const struct ksz_chip_data ksz_switch_chips[] = {
|
||||
.dev_name = "KSZ8794",
|
||||
.num_vlans = 4096,
|
||||
.num_alus = 0,
|
||||
.num_statics = 8,
|
||||
.num_statics = 32,
|
||||
.cpu_ports = 0x10, /* can be configured as cpu port */
|
||||
.port_cnt = 5, /* total cpu and user ports */
|
||||
.num_tx_queues = 4,
|
||||
.num_ipms = 4,
|
||||
.ops = &ksz8_dev_ops,
|
||||
.ops = &ksz87xx_dev_ops,
|
||||
.phylink_mac_ops = &ksz8_phylink_mac_ops,
|
||||
.ksz87xx_eee_link_erratum = true,
|
||||
.mib_names = ksz9477_mib_names,
|
||||
@ -1330,12 +1365,12 @@ const struct ksz_chip_data ksz_switch_chips[] = {
|
||||
.dev_name = "KSZ8765",
|
||||
.num_vlans = 4096,
|
||||
.num_alus = 0,
|
||||
.num_statics = 8,
|
||||
.num_statics = 32,
|
||||
.cpu_ports = 0x10, /* can be configured as cpu port */
|
||||
.port_cnt = 5, /* total cpu and user ports */
|
||||
.num_tx_queues = 4,
|
||||
.num_ipms = 4,
|
||||
.ops = &ksz8_dev_ops,
|
||||
.ops = &ksz87xx_dev_ops,
|
||||
.phylink_mac_ops = &ksz8_phylink_mac_ops,
|
||||
.ksz87xx_eee_link_erratum = true,
|
||||
.mib_names = ksz9477_mib_names,
|
||||
@ -1362,7 +1397,7 @@ const struct ksz_chip_data ksz_switch_chips[] = {
|
||||
.port_cnt = 3,
|
||||
.num_tx_queues = 4,
|
||||
.num_ipms = 4,
|
||||
.ops = &ksz8_dev_ops,
|
||||
.ops = &ksz88x3_dev_ops,
|
||||
.phylink_mac_ops = &ksz8830_phylink_mac_ops,
|
||||
.mib_names = ksz88xx_mib_names,
|
||||
.mib_cnt = ARRAY_SIZE(ksz88xx_mib_names),
|
||||
|
Loading…
Reference in New Issue
Block a user