]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
net: dsa: b53: move writing ARL entries into their own functions
authorJonas Gorski <jonas.gorski@gmail.com>
Fri, 7 Nov 2025 08:07:44 +0000 (09:07 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 18 Dec 2025 13:03:29 +0000 (14:03 +0100)
[ Upstream commit bf6e9d2ae1dbafee53ec4ccd126595172e1e5278 ]

Move writing ARL entries into individual functions 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-4-jonas.gorski@gmail.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Stable-dep-of: 8e46aacea426 ("net: dsa: b53: use same ARL search result offset for BCM5325/65")
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/net/dsa/b53/b53_common.c

index 41dcd2d03230d3090b4546eef8445512caf59e8a..4c418e0531f738bbbea4606a72b71568bbd67461 100644 (file)
@@ -1840,6 +1840,16 @@ static void b53_arl_read_entry_25(struct b53_device *dev,
        b53_arl_to_entry_25(ent, mac_vid);
 }
 
+static void b53_arl_write_entry_25(struct b53_device *dev,
+                                  const struct b53_arl_entry *ent, u8 idx)
+{
+       u64 mac_vid;
+
+       b53_arl_from_entry_25(&mac_vid, ent);
+       b53_write64(dev, B53_ARLIO_PAGE, B53_ARLTBL_MAC_VID_ENTRY(idx),
+                   mac_vid);
+}
+
 static void b53_arl_read_entry_95(struct b53_device *dev,
                                  struct b53_arl_entry *ent, u8 idx)
 {
@@ -1852,6 +1862,19 @@ static void b53_arl_read_entry_95(struct b53_device *dev,
        b53_arl_to_entry(ent, mac_vid, fwd_entry);
 }
 
+static void b53_arl_write_entry_95(struct b53_device *dev,
+                                  const struct b53_arl_entry *ent, u8 idx)
+{
+       u32 fwd_entry;
+       u64 mac_vid;
+
+       b53_arl_from_entry(&mac_vid, &fwd_entry, ent);
+       b53_write64(dev, B53_ARLIO_PAGE, B53_ARLTBL_MAC_VID_ENTRY(idx),
+                   mac_vid);
+       b53_write32(dev, B53_ARLIO_PAGE, B53_ARLTBL_DATA_ENTRY(idx),
+                   fwd_entry);
+}
+
 static int b53_arl_read(struct b53_device *dev, const u8 *mac,
                        u16 vid, struct b53_arl_entry *ent, u8 *idx)
 {
@@ -1892,9 +1915,8 @@ static int b53_arl_op(struct b53_device *dev, int op, int port,
                      const unsigned char *addr, u16 vid, bool is_valid)
 {
        struct b53_arl_entry ent;
-       u32 fwd_entry;
-       u64 mac, mac_vid = 0;
        u8 idx = 0;
+       u64 mac;
        int ret;
 
        /* Convert the array into a 64-bit MAC */
@@ -1931,7 +1953,6 @@ static int b53_arl_op(struct b53_device *dev, int op, int port,
                /* We could not find a matching MAC, so reset to a new entry */
                dev_dbg(dev->dev, "{%pM,%.4d} not found, using idx: %d\n",
                        addr, vid, idx);
-               fwd_entry = 0;
                break;
        default:
                dev_dbg(dev->dev, "{%pM,%.4d} found, using idx: %d\n",
@@ -1959,16 +1980,9 @@ static int b53_arl_op(struct b53_device *dev, int op, int port,
        ent.is_age = false;
        memcpy(ent.mac, addr, ETH_ALEN);
        if (is5325(dev) || is5365(dev))
-               b53_arl_from_entry_25(&mac_vid, &ent);
+               b53_arl_write_entry_25(dev, &ent, idx);
        else
-               b53_arl_from_entry(&mac_vid, &fwd_entry, &ent);
-
-       b53_write64(dev, B53_ARLIO_PAGE,
-                   B53_ARLTBL_MAC_VID_ENTRY(idx), mac_vid);
-
-       if (!is5325(dev) && !is5365(dev))
-               b53_write32(dev, B53_ARLIO_PAGE,
-                           B53_ARLTBL_DATA_ENTRY(idx), fwd_entry);
+               b53_arl_write_entry_95(dev, &ent, idx);
 
        return b53_arl_rw_op(dev, 0);
 }