Skip to content

Commit fe49a05

Browse files
Merge branch 'openwrt:main' into main
2 parents fa12875 + 73bfb34 commit fe49a05

15 files changed

Lines changed: 126 additions & 125 deletions

File tree

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
2+
Date: Fri, 27 Feb 2026 19:59:16 +0100
3+
Subject: [PATCH] net: dsa: b53: disable EAP setup on Northstar switches
4+
MIME-Version: 1.0
5+
Content-Type: text/plain; charset=UTF-8
6+
Content-Transfer-Encoding: 8bit
7+
8+
It breaks standalone ports.
9+
10+
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
11+
---
12+
drivers/net/dsa/b53/b53_common.c | 15 +++++++++++++++
13+
1 file changed, 15 insertions(+)
14+
15+
--- a/drivers/net/dsa/b53/b53_common.c
16+
+++ b/drivers/net/dsa/b53/b53_common.c
17+
@@ -332,6 +332,21 @@ static void b53_set_eap_mode(struct b53_
18+
{
19+
u64 eap_conf;
20+
21+
+ /*
22+
+ * On Northstar devices (SoCs with BCM53011 / BCM53012) setting
23+
+ * EAP_MODE_SIMPLIFIED breaks standalone ports.
24+
+ *
25+
+ * See:
26+
+ * https://lore.kernel.org/netdev/ce4d9b7b-aaf6-4796-94fb-8c3d6a1dcd4d@gmail.com/
27+
+ * https://github.com/openwrt/openwrt/issues/21187
28+
+ * https://github.com/openwrt/openwrt/issues/21349
29+
+ *
30+
+ * For details on EAP see commit 4227ea91e265 ("net: dsa: b53: prevent
31+
+ * standalone from trying to forward to other ports").
32+
+ */
33+
+ if (is5301x(dev))
34+
+ return;
35+
+
36+
if (is5325(dev) || is5365(dev) || dev->chip_id == BCM5389_DEVICE_ID)
37+
return;
38+

target/linux/econet/patches-6.12/029-12-v6.19-spi-airoha-avoid-reading-flash-page-settings-from-SN.patch

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,7 @@ Signed-off-by: Mark Brown <broonie@kernel.org>
158158
.supports_op = airoha_snand_supports_op,
159159
.exec_op = airoha_snand_exec_op,
160160
.dirmap_create = airoha_snand_dirmap_create,
161-
@@ -1101,36 +1026,6 @@ static int airoha_snand_setup(struct spi
161+
@@ -1106,36 +1031,6 @@ static int airoha_snand_setup(struct spi
162162
return 0;
163163
}
164164

@@ -195,7 +195,7 @@ Signed-off-by: Mark Brown <broonie@kernel.org>
195195
static const struct regmap_config spi_ctrl_regmap_config = {
196196
.name = "ctrl",
197197
.reg_bits = 32,
198-
@@ -1204,7 +1099,7 @@ static int airoha_snand_probe(struct pla
198+
@@ -1227,7 +1122,7 @@ static int airoha_snand_probe(struct pla
199199
ctrl->setup = airoha_snand_setup;
200200
device_set_node(&ctrl->dev, dev_fwnode(dev));
201201

target/linux/econet/patches-6.12/310-usb-enable-econet-usb.patch

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
+ select DMA_NONCOHERENT
88
select DEBUG_ZBOOT if DEBUG_KERNEL
99
select EARLY_PRINTK_8250
10-
select SERIAL_8250
10+
select ECONET_EN751221_TIMER
1111
--- a/drivers/usb/host/Kconfig
1212
+++ b/drivers/usb/host/Kconfig
1313
@@ -71,7 +71,7 @@ config USB_XHCI_HISTB

target/linux/generic/kernel-6.12

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
LINUX_VERSION-6.12 = .71
2-
LINUX_KERNEL_HASH-6.12.71 = 143e8bc76cc41f831b51aa5e75819bed55bed41f299d35922820f1d2d2b02600
1+
LINUX_VERSION-6.12 = .74
2+
LINUX_KERNEL_HASH-6.12.74 = 3b56eeb1dc9a437f189ca56b823be3769994f59a4ea0895b08ec0d20acaca13e

target/linux/lantiq/files/arch/mips/boot/dts/lantiq/danube_arcadyan_arv7525pw.dts

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -135,10 +135,6 @@
135135
macaddr_boardconfig_16: macaddr@16 {
136136
reg = <0x16 0x6>;
137137
};
138-
139-
eeprom_boardconfig_410: eeprom@410 {
140-
reg = <0x410 0x200>;
141-
};
142138
};
143139
};
144140
};
@@ -156,8 +152,7 @@
156152
wifi@e,0 {
157153
compatible = "pci0,0";
158154
reg = <0x7000 0 0 0 0>;
159-
nvmem-cells = <&eeprom_boardconfig_410>;
160-
nvmem-cell-names = "eeprom";
155+
ralink,mtd-eeprom = <&boardconfig 0x410>;
161156
};
162157
};
163158

target/linux/realtek/files-6.12/drivers/net/dsa/rtl83xx/debugfs.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -384,7 +384,7 @@ static ssize_t age_out_write(struct file *filp, const char __user *buffer,
384384
if (res < 0)
385385
return res;
386386

387-
rtldsa_83xx_fast_age(p->dp->ds, p->dp->index);
387+
rtldsa_port_fast_age(p->dp->ds, p->dp->index);
388388

389389
return res;
390390
}

target/linux/realtek/files-6.12/drivers/net/dsa/rtl83xx/dsa.c

Lines changed: 15 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -1911,69 +1911,6 @@ void rtldsa_port_stp_state_set(struct dsa_switch *ds, int port, u8 state)
19111911
mutex_unlock(&priv->reg_mutex);
19121912
}
19131913

1914-
void rtldsa_83xx_fast_age(struct dsa_switch *ds, int port)
1915-
{
1916-
struct rtl838x_switch_priv *priv = ds->priv;
1917-
int s = priv->family_id == RTL8390_FAMILY_ID ? 2 : 0;
1918-
1919-
pr_debug("FAST AGE port %d\n", port);
1920-
mutex_lock(&priv->reg_mutex);
1921-
/* RTL838X_L2_TBL_FLUSH_CTRL register bits, 839x has 1 bit larger
1922-
* port fields:
1923-
* 0-4: Replacing port
1924-
* 5-9: Flushed/replaced port
1925-
* 10-21: FVID
1926-
* 22: Entry types: 1: dynamic, 0: also static
1927-
* 23: Match flush port
1928-
* 24: Match FVID
1929-
* 25: Flush (0) or replace (1) L2 entries
1930-
* 26: Status of action (1: Start, 0: Done)
1931-
*/
1932-
sw_w32(1 << (26 + s) | 1 << (23 + s) | port << (5 + (s / 2)), priv->r->l2_tbl_flush_ctrl);
1933-
1934-
do { } while (sw_r32(priv->r->l2_tbl_flush_ctrl) & BIT(26 + s));
1935-
1936-
mutex_unlock(&priv->reg_mutex);
1937-
}
1938-
1939-
static void rtldsa_931x_fast_age(struct dsa_switch *ds, int port)
1940-
{
1941-
struct rtl838x_switch_priv *priv = ds->priv;
1942-
u32 val;
1943-
1944-
mutex_lock(&priv->reg_mutex);
1945-
1946-
sw_w32(0, RTL931X_L2_TBL_FLUSH_CTRL + 4);
1947-
1948-
val = 0;
1949-
val |= port << 11;
1950-
val |= BIT(24); /* compare port id */
1951-
val |= BIT(28); /* status - trigger flush */
1952-
sw_w32(val, RTL931X_L2_TBL_FLUSH_CTRL);
1953-
1954-
do { } while (sw_r32(RTL931X_L2_TBL_FLUSH_CTRL) & BIT(28));
1955-
1956-
mutex_unlock(&priv->reg_mutex);
1957-
}
1958-
1959-
static void rtldsa_930x_fast_age(struct dsa_switch *ds, int port)
1960-
{
1961-
struct rtl838x_switch_priv *priv = ds->priv;
1962-
1963-
if (priv->family_id == RTL9310_FAMILY_ID)
1964-
return rtldsa_931x_fast_age(ds, port);
1965-
1966-
pr_debug("FAST AGE port %d\n", port);
1967-
mutex_lock(&priv->reg_mutex);
1968-
sw_w32(port << 11, RTL930X_L2_TBL_FLUSH_CTRL + 4);
1969-
1970-
sw_w32(BIT(26) | BIT(30), RTL930X_L2_TBL_FLUSH_CTRL);
1971-
1972-
do { } while (sw_r32(priv->r->l2_tbl_flush_ctrl) & BIT(30));
1973-
1974-
mutex_unlock(&priv->reg_mutex);
1975-
}
1976-
19771914
static int rtldsa_port_mst_state_set(struct dsa_switch *ds, int port,
19781915
const struct switchdev_mst_state *st)
19791916
{
@@ -2185,16 +2122,26 @@ static int rtldsa_vlan_del(struct dsa_switch *ds, int port,
21852122
return 0;
21862123
}
21872124

2125+
void rtldsa_port_fast_age(struct dsa_switch *ds, int port)
2126+
{
2127+
struct rtl838x_switch_priv *priv = ds->priv;
2128+
2129+
mutex_lock(&priv->reg_mutex);
2130+
if (!priv->r->fast_age)
2131+
priv->r->fast_age(priv, port, -1);
2132+
mutex_unlock(&priv->reg_mutex);
2133+
}
2134+
21882135
static int rtldsa_port_vlan_fast_age(struct dsa_switch *ds, int port, u16 vid)
21892136
{
21902137
struct rtl838x_switch_priv *priv = ds->priv;
21912138
int ret;
21922139

2193-
if (!priv->r->vlan_port_fast_age)
2140+
if (!priv->r->fast_age)
21942141
return -EOPNOTSUPP;
21952142

21962143
mutex_lock(&priv->reg_mutex);
2197-
ret = priv->r->vlan_port_fast_age(priv, port, vid);
2144+
ret = priv->r->fast_age(priv, port, vid);
21982145
mutex_unlock(&priv->reg_mutex);
21992146

22002147
return ret;
@@ -3017,12 +2964,13 @@ const struct dsa_switch_ops rtldsa_83xx_switch_ops = {
30172964
.port_bridge_join = rtldsa_port_bridge_join,
30182965
.port_bridge_leave = rtldsa_port_bridge_leave,
30192966
.port_stp_state_set = rtldsa_port_stp_state_set,
3020-
.port_fast_age = rtldsa_83xx_fast_age,
2967+
.port_fast_age = rtldsa_port_fast_age,
30212968
.port_mst_state_set = rtldsa_port_mst_state_set,
30222969

30232970
.port_vlan_filtering = rtldsa_vlan_filtering,
30242971
.port_vlan_add = rtldsa_vlan_add,
30252972
.port_vlan_del = rtldsa_vlan_del,
2973+
.port_vlan_fast_age = rtldsa_port_vlan_fast_age,
30262974
.vlan_msti_set = rtldsa_vlan_msti_set,
30272975

30282976
.port_fdb_add = rtldsa_port_fdb_add,
@@ -3076,7 +3024,7 @@ const struct dsa_switch_ops rtldsa_93xx_switch_ops = {
30763024
.port_bridge_join = rtldsa_port_bridge_join,
30773025
.port_bridge_leave = rtldsa_port_bridge_leave,
30783026
.port_stp_state_set = rtldsa_port_stp_state_set,
3079-
.port_fast_age = rtldsa_930x_fast_age,
3027+
.port_fast_age = rtldsa_port_fast_age,
30803028
.port_mst_state_set = rtldsa_port_mst_state_set,
30813029

30823030
.port_vlan_filtering = rtldsa_vlan_filtering,

target/linux/realtek/files-6.12/drivers/net/dsa/rtl83xx/rtl838x.c

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1613,6 +1613,20 @@ static void rtl838x_vlan_port_pvid_set(int port, enum pbvlan_type type, int pvid
16131613
sw_w32_mask(0xfff << 16, pvid << 16, RTL838X_VLAN_PORT_PB_VLAN + (port << 2));
16141614
}
16151615

1616+
static int rtldsa_838x_fast_age(struct rtl838x_switch_priv *priv, int port, int vid)
1617+
{
1618+
u32 val;
1619+
1620+
val = BIT(26) | BIT(23) | (port << 5);
1621+
if (vid >= 0)
1622+
val |= BIT(24) | (vid << 10);
1623+
1624+
sw_w32(val, priv->r->l2_tbl_flush_ctrl);
1625+
do { } while (sw_r32(priv->r->l2_tbl_flush_ctrl) & BIT(26));
1626+
1627+
return 0;
1628+
}
1629+
16161630
static int rtl838x_set_ageing_time(unsigned long msec)
16171631
{
16181632
int t = sw_r32(RTL838X_L2_CTRL_1);
@@ -1731,6 +1745,7 @@ const struct rtldsa_config rtldsa_838x_cfg = {
17311745
.vlan_port_keep_tag_set = rtl838x_vlan_port_keep_tag_set,
17321746
.vlan_port_pvidmode_set = rtl838x_vlan_port_pvidmode_set,
17331747
.vlan_port_pvid_set = rtl838x_vlan_port_pvid_set,
1748+
.fast_age = rtldsa_838x_fast_age,
17341749
.trk_mbr_ctr = rtl838x_trk_mbr_ctr,
17351750
.rma_bpdu_fld_pmask = RTL838X_RMA_BPDU_FLD_PMSK,
17361751
.spcl_trap_eapol_ctrl = RTL838X_SPCL_TRAP_EAPOL_CTRL,

target/linux/realtek/files-6.12/drivers/net/dsa/rtl83xx/rtl838x.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1284,7 +1284,7 @@ struct rtldsa_config {
12841284
void (*vlan_port_pvidmode_set)(int port, enum pbvlan_type type, enum pbvlan_mode mode);
12851285
void (*vlan_port_pvid_set)(int port, enum pbvlan_type type, int pvid);
12861286
void (*vlan_port_keep_tag_set)(int port, bool keep_outer, bool keep_inner);
1287-
int (*vlan_port_fast_age)(struct rtl838x_switch_priv *priv, int port, u16 vid);
1287+
int (*fast_age)(struct rtl838x_switch_priv *priv, int port, int vid);
12881288
void (*set_vlan_igr_filter)(int port, enum igr_filter state);
12891289
void (*set_vlan_egr_filter)(int port, enum egr_filter state);
12901290
void (*enable_learning)(int port, bool enable);

target/linux/realtek/files-6.12/drivers/net/dsa/rtl83xx/rtl839x.c

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1554,6 +1554,20 @@ static void rtl839x_vlan_port_pvid_set(int port, enum pbvlan_type type, int pvid
15541554
sw_w32_mask(0xfff << 16, pvid << 16, RTL839X_VLAN_PORT_PB_VLAN + (port << 2));
15551555
}
15561556

1557+
static int rtldsa_839x_fast_age(struct rtl838x_switch_priv *priv, int port, int vid)
1558+
{
1559+
u32 val;
1560+
1561+
val = BIT(28) | BIT(25) | (port << 6);
1562+
if (vid >= 0)
1563+
val |= BIT(26) | (vid << 12);
1564+
1565+
sw_w32(val, priv->r->l2_tbl_flush_ctrl);
1566+
do { } while (sw_r32(priv->r->l2_tbl_flush_ctrl) & BIT(28));
1567+
1568+
return 0;
1569+
}
1570+
15571571
static int rtl839x_set_ageing_time(unsigned long msec)
15581572
{
15591573
int t = sw_r32(RTL839X_L2_CTRL_1);
@@ -1671,6 +1685,7 @@ const struct rtldsa_config rtldsa_839x_cfg = {
16711685
.write_l2_entry_using_hash = rtl839x_write_l2_entry_using_hash,
16721686
.read_cam = rtl839x_read_cam,
16731687
.write_cam = rtl839x_write_cam,
1688+
.fast_age = rtldsa_839x_fast_age,
16741689
.trk_mbr_ctr = rtl839x_trk_mbr_ctr,
16751690
.rma_bpdu_fld_pmask = RTL839X_RMA_BPDU_FLD_PMSK,
16761691
.spcl_trap_eapol_ctrl = RTL839X_SPCL_TRAP_EAPOL_CTRL,

0 commit comments

Comments
 (0)