mirror of
git://git.openwrt.org/openwrt/openwrt.git
synced 2025-12-06 20:54:00 -05:00
These patches have been accepted in netdev-next for linux v6.19.
2b3013ac0302 net: dsa: b53: add support for bcm63xx ARL entry format
300f78e8b6b7 net: dsa: b53: add support for 5389/5397/5398 ARL entry format
a7e73339ad46 net: dsa: b53: move ARL entry functions into ops struct
e0c476f325a8 net: dsa: b53: split reading search entry into their own functions
1716be6db04a net: dsa: b53: provide accessors for accessing ARL_SRCH_CTL
bf6e9d2ae1db net: dsa: b53: move writing ARL entries into their own functions
4a291fe72267 net: dsa: b53: move reading ARL entries into their own function
a6e4fd38bf2f net: dsa: b53: b53_arl_read{,25}(): use the entry for comparision
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
87 lines
2.6 KiB
Diff
87 lines
2.6 KiB
Diff
From e0c476f325a8c9b961a3d446c24d3c8ecae7d186 Mon Sep 17 00:00:00 2001
|
|
From: Jonas Gorski <jonas.gorski@gmail.com>
|
|
Date: Fri, 7 Nov 2025 09:07:46 +0100
|
|
Subject: [PATCH] net: dsa: b53: split reading search entry into their own
|
|
functions
|
|
|
|
Split reading search entries into a function for each format.
|
|
|
|
Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
|
|
Reviewed-by: Florian Fainelli <florian.fainelli@broadcom.com>
|
|
Link: https://patch.msgid.link/20251107080749.26936-6-jonas.gorski@gmail.com
|
|
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
|
---
|
|
drivers/net/dsa/b53/b53_common.c | 56 ++++++++++++++++++++++----------
|
|
1 file changed, 38 insertions(+), 18 deletions(-)
|
|
|
|
--- a/drivers/net/dsa/b53/b53_common.c
|
|
+++ b/drivers/net/dsa/b53/b53_common.c
|
|
@@ -2056,28 +2056,48 @@ static int b53_arl_search_wait(struct b5
|
|
return -ETIMEDOUT;
|
|
}
|
|
|
|
-static void b53_arl_search_rd(struct b53_device *dev, u8 idx,
|
|
- struct b53_arl_entry *ent)
|
|
+static void b53_arl_search_read_25(struct b53_device *dev, u8 idx,
|
|
+ struct b53_arl_entry *ent)
|
|
{
|
|
u64 mac_vid;
|
|
|
|
- if (is5325(dev)) {
|
|
- b53_read64(dev, B53_ARLIO_PAGE, B53_ARL_SRCH_RSTL_0_MACVID_25,
|
|
- &mac_vid);
|
|
- b53_arl_to_entry_25(ent, mac_vid);
|
|
- } else if (is5365(dev)) {
|
|
- b53_read64(dev, B53_ARLIO_PAGE, B53_ARL_SRCH_RSTL_0_MACVID_65,
|
|
- &mac_vid);
|
|
- b53_arl_to_entry_25(ent, mac_vid);
|
|
- } else {
|
|
- u32 fwd_entry;
|
|
-
|
|
- b53_read64(dev, B53_ARLIO_PAGE, B53_ARL_SRCH_RSTL_MACVID(idx),
|
|
- &mac_vid);
|
|
- b53_read32(dev, B53_ARLIO_PAGE, B53_ARL_SRCH_RSTL(idx),
|
|
- &fwd_entry);
|
|
- b53_arl_to_entry(ent, mac_vid, fwd_entry);
|
|
- }
|
|
+ b53_read64(dev, B53_ARLIO_PAGE, B53_ARL_SRCH_RSTL_0_MACVID_25,
|
|
+ &mac_vid);
|
|
+ b53_arl_to_entry_25(ent, mac_vid);
|
|
+}
|
|
+
|
|
+static void b53_arl_search_read_65(struct b53_device *dev, u8 idx,
|
|
+ struct b53_arl_entry *ent)
|
|
+{
|
|
+ u64 mac_vid;
|
|
+
|
|
+ b53_read64(dev, B53_ARLIO_PAGE, B53_ARL_SRCH_RSTL_0_MACVID_65,
|
|
+ &mac_vid);
|
|
+ b53_arl_to_entry_25(ent, mac_vid);
|
|
+}
|
|
+
|
|
+static void b53_arl_search_read_95(struct b53_device *dev, u8 idx,
|
|
+ struct b53_arl_entry *ent)
|
|
+{
|
|
+ u32 fwd_entry;
|
|
+ u64 mac_vid;
|
|
+
|
|
+ b53_read64(dev, B53_ARLIO_PAGE, B53_ARL_SRCH_RSTL_MACVID(idx),
|
|
+ &mac_vid);
|
|
+ b53_read32(dev, B53_ARLIO_PAGE, B53_ARL_SRCH_RSTL(idx),
|
|
+ &fwd_entry);
|
|
+ b53_arl_to_entry(ent, mac_vid, fwd_entry);
|
|
+}
|
|
+
|
|
+static void b53_arl_search_rd(struct b53_device *dev, u8 idx,
|
|
+ struct b53_arl_entry *ent)
|
|
+{
|
|
+ if (is5325(dev))
|
|
+ b53_arl_search_read_25(dev, idx, ent);
|
|
+ else if (is5365(dev))
|
|
+ b53_arl_search_read_65(dev, idx, ent);
|
|
+ else
|
|
+ b53_arl_search_read_95(dev, idx, ent);
|
|
}
|
|
|
|
static int b53_fdb_copy(int port, const struct b53_arl_entry *ent,
|