]> git.ipfire.org Git - thirdparty/kernel/linux.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)
committerJakub Kicinski <kuba@kernel.org>
Tue, 11 Nov 2025 01:11:07 +0000 (17:11 -0800)
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>
drivers/net/dsa/b53/b53_common.c

index 9eb7ca878e30109790a6bda38f7d1e52d835df08..b13437ea21a09d3705385d2a4fc92e14e9ea721d 100644 (file)
@@ -2033,18 +2033,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;
 
@@ -2099,23 +2118,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);