]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
net: dsa: b53: provide accessors for accessing ARL_SRCH_CTL
authorJonas Gorski <jonas.gorski@gmail.com>
Fri, 7 Nov 2025 08:07:45 +0000 (09:07 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 18 Dec 2025 13:03:29 +0000 (14:03 +0100)
[ Upstream commit 1716be6db04af53bac9b869f01156a460595cf41 ]

In order to more easily support more formats, move accessing
ARL_SRCH_CTL into helper functions to contain the differences.

Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
Reviewed-by: Florian Fainelli <florian.fainelli@broadcom.com>
Link: https://patch.msgid.link/20251107080749.26936-5-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 4c418e0531f738bbbea4606a72b71568bbd67461..38e6fa05042ca815764cc35478d27b1bfae79b1a 100644 (file)
@@ -2017,18 +2017,37 @@ int b53_fdb_del(struct dsa_switch *ds, int port,
 }
 EXPORT_SYMBOL(b53_fdb_del);
 
-static int b53_arl_search_wait(struct b53_device *dev)
+static void b53_read_arl_srch_ctl(struct b53_device *dev, u8 *val)
 {
-       unsigned int timeout = 1000;
-       u8 reg, offset;
+       u8 offset;
+
+       if (is5325(dev) || is5365(dev))
+               offset = B53_ARL_SRCH_CTL_25;
+       else
+               offset = B53_ARL_SRCH_CTL;
+
+       b53_read8(dev, B53_ARLIO_PAGE, offset, val);
+}
+
+static void b53_write_arl_srch_ctl(struct b53_device *dev, u8 val)
+{
+       u8 offset;
 
        if (is5325(dev) || is5365(dev))
                offset = B53_ARL_SRCH_CTL_25;
        else
                offset = B53_ARL_SRCH_CTL;
 
+       b53_write8(dev, B53_ARLIO_PAGE, offset, val);
+}
+
+static int b53_arl_search_wait(struct b53_device *dev)
+{
+       unsigned int timeout = 1000;
+       u8 reg;
+
        do {
-               b53_read8(dev, B53_ARLIO_PAGE, offset, &reg);
+               b53_read_arl_srch_ctl(dev, &reg);
                if (!(reg & ARL_SRCH_STDN))
                        return -ENOENT;
 
@@ -2083,23 +2102,15 @@ int b53_fdb_dump(struct dsa_switch *ds, int port,
        unsigned int count = 0, results_per_hit = 1;
        struct b53_device *priv = ds->priv;
        struct b53_arl_entry results[2];
-       u8 offset;
        int ret;
-       u8 reg;
 
        if (priv->num_arl_bins > 2)
                results_per_hit = 2;
 
        mutex_lock(&priv->arl_mutex);
 
-       if (is5325(priv) || is5365(priv))
-               offset = B53_ARL_SRCH_CTL_25;
-       else
-               offset = B53_ARL_SRCH_CTL;
-
        /* Start search operation */
-       reg = ARL_SRCH_STDN;
-       b53_write8(priv, B53_ARLIO_PAGE, offset, reg);
+       b53_write_arl_srch_ctl(priv, ARL_SRCH_STDN);
 
        do {
                ret = b53_arl_search_wait(priv);