From nobody Fri Dec 19 19:17:19 2025 Received: from mail-ed1-f45.google.com (mail-ed1-f45.google.com [209.85.208.45]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7D69130E0C2 for ; Fri, 7 Nov 2025 08:08:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.45 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762502884; cv=none; b=CBrK89WfWcTXZaufTFfICEA/+6kBs9cjElPiJ6YmXzW2GSfScWOFyCGbTOiCI08jrp9QLhga69Kcir7ZGWRzrxqnRXsCmnnjJuWQflk/ArKSvYTVdzV3DhIRrE9rt9eC6FA3hodrLfS9fzbk8rqwQvCFViqALI8V292ntVdMwEQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762502884; c=relaxed/simple; bh=IFa0nENLlX3jBjh3l5VRe6sWQF2NPAjRygMAS6QACCM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=ctIKoBzcLUdnop5LGhzrACefjNXnGnedJBhy02BokASTn2OMO+0OVwP/komeNQy+fgcOH0q73F4dG1FayOJkd3beMPOnUQNwTNVYPBgZnYIP/YVCXQQNkl7twA/vcGTXb+EP/9cHXy8rv8NIbySKaMNGmsB+WpST6XYjIWF8tAg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=EGONIwMX; arc=none smtp.client-ip=209.85.208.45 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="EGONIwMX" Received: by mail-ed1-f45.google.com with SMTP id 4fb4d7f45d1cf-640f4b6836bso864918a12.3 for ; Fri, 07 Nov 2025 00:08:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1762502881; x=1763107681; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=IAm1gcCHSoAlOOU6uyfeG288SIujI9v9lW77zI7FnWU=; b=EGONIwMXtzZ6o5saKFNuZsmbmrtZrrHbfbW8i7Jr+3J/HWtz3ARZvjeWQHAuc2AIN+ y8b5Rr2owF7Eat7gPX/NCQaCRzy30DJQW38KLIyHCMIDHf5sJ53b+o0RuEzXbtLVh80K aj0IJ3zi5ZSM3RUcwlNYLFW/rTiRFVOMd4reZawnfRysHw5CxnI7XTKkjjnSs5KIKhoI sgX6iLCV8r4ozBOc8IDTYJTPDQtvdJ/LiE8gTTEhrJZzFAN8QglOJ6haVTBkpgd7DHEo iaa1ET2yj2ksSwoJ8LIYy5xmca56Kmh4+6D2gAr5uqm8ZdfQk3ilUz2VopwEkVaXBTpD Wmiw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1762502881; x=1763107681; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=IAm1gcCHSoAlOOU6uyfeG288SIujI9v9lW77zI7FnWU=; b=Z8Nfr0wpA7fBF1Q6WBRH8vtW/8fsOQ7KPuQWVc14mtGTJda1ytRBMseaXBNQScR4v5 nUQ1E+UWGScQzVoCnhkyYCl2SpH+If7C+zpC1rcWBLJgEX1qw8jKED1bLkRrE2zIUxEt ynaEBeDyq4twYFkn9wDu+KHiDGkpS9fmXRtwG8fynOaHcXOHmQJc7kDF56NnaAJPW/a5 2+eiwm1ZKCmesnc5w8+yDqAgVQ1oguEqeFsP/4BKPr68UsNv/MHR2R/ovHL7j7i6uAmZ HAI4J/v67Cw8y/76VCzW8P82x1m7VdS8QHzI2RMOOHKwhRNK/Bib6miOlYRumMqQkQeD BSqA== X-Forwarded-Encrypted: i=1; AJvYcCUHlbdlD+uigLX/od+8mJD8Hzfvc15p6ZvVAf6kLeJlB63fARmSkcL9Y2upHDwHFiyMqw+rg2foD7h39xo=@vger.kernel.org X-Gm-Message-State: AOJu0Yx/Pd0cra3JdaQIO4fOROvqkMhZpA1eZaauQE4fXjk+QNe4fM5t 1ooup15qan7ga9I3UxFqgSlP1C7jGHdq8QuG8yAup0kwHUxLqWyoUfIs X-Gm-Gg: ASbGncuXidIoGt+udmHZ6rVhSUqhgOSWUzgDavSQxsG+J301FTU1jh1M2HcRrmAFW0b tahHCb/tymemBke9UYiyeVLHeTQwu7NYLdtISeoDXQEwmGERNM0/NIbHMfc2/RO0l1ncgqPz7yc 4R6hPx4RhI1NYbKcHej6ZmeraVbeWqwjT2nKyZz6jjcP3kQ8RcBxV20E84ewTJ35vNsWD2xwYYA 7lddXkvkC50wvImCZE5JuaqcEW2UTKLkRQWof/zrHDYepI+C89j8QugWrMdYfn2TRFSyQftNeMX LBo14et2+bq9KqFWmfE75OlQ17O7+mhMWuv3/cNPlzr1D/PAKmtqtfEwjW2grUdB1EnCjK3pnvw zu5034Ibp7Z7FQmUQBPa621br1TO5fAbpB/+enMSmQqz+1gFGx1jTv5Inwc51RmgBsaVkapepA3 fpI6RmtByjwZG9u3YiGUeI1MEw6HtBgPBctO+G2Ef4hIieUuqdU/S0k04zGw7xnJT8j+s= X-Google-Smtp-Source: AGHT+IFSL8feEEjbvxeG62b06CI5tTn7LvdOq1xXx0yvI1Z30Sc5wm0UnCG9Ava+KGc85fT3QUMfDw== X-Received: by 2002:a05:6402:4405:b0:641:3b9b:b81e with SMTP id 4fb4d7f45d1cf-6413f1fc6f7mr2067760a12.23.1762502880518; Fri, 07 Nov 2025 00:08:00 -0800 (PST) Received: from localhost (dslb-002-205-018-238.002.205.pools.vodafone-ip.de. [2.205.18.238]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-6411f71393fsm3627237a12.3.2025.11.07.00.07.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 07 Nov 2025 00:08:00 -0800 (PST) From: Jonas Gorski To: Florian Fainelli , Andrew Lunn , Vladimir Oltean , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH net-next 1/8] net: dsa: b53: b53_arl_read{,25}(): use the entry for comparision Date: Fri, 7 Nov 2025 09:07:42 +0100 Message-ID: <20251107080749.26936-2-jonas.gorski@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251107080749.26936-1-jonas.gorski@gmail.com> References: <20251107080749.26936-1-jonas.gorski@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Align the b53_arl_read{,25}() functions by consistently using the parsed arl entry instead of parsing the raw registers again. Signed-off-by: Jonas Gorski Reviewed-by: Florian Fainelli --- drivers/net/dsa/b53/b53_common.c | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/drivers/net/dsa/b53/b53_common.c b/drivers/net/dsa/b53/b53_com= mon.c index c911d7ea601f..1b94cf7b06e8 100644 --- a/drivers/net/dsa/b53/b53_common.c +++ b/drivers/net/dsa/b53/b53_common.c @@ -1850,7 +1850,7 @@ static int b53_arl_rw_op(struct b53_device *dev, unsi= gned int op) return b53_arl_op_wait(dev); } =20 -static int b53_arl_read(struct b53_device *dev, u64 mac, +static int b53_arl_read(struct b53_device *dev, const u8 *mac, u16 vid, struct b53_arl_entry *ent, u8 *idx) { DECLARE_BITMAP(free_bins, B53_ARLTBL_MAX_BIN_ENTRIES); @@ -1874,14 +1874,13 @@ static int b53_arl_read(struct b53_device *dev, u64= mac, B53_ARLTBL_DATA_ENTRY(i), &fwd_entry); b53_arl_to_entry(ent, mac_vid, fwd_entry); =20 - if (!(fwd_entry & ARLTBL_VALID)) { + if (!ent->is_valid) { set_bit(i, free_bins); continue; } - if ((mac_vid & ARLTBL_MAC_MASK) !=3D mac) + if (!ether_addr_equal(ent->mac, mac)) continue; - if (dev->vlan_enabled && - ((mac_vid >> ARLTBL_VID_S) & ARLTBL_VID_MASK) !=3D vid) + if (dev->vlan_enabled && ent->vid !=3D vid) continue; *idx =3D i; return 0; @@ -1891,7 +1890,7 @@ static int b53_arl_read(struct b53_device *dev, u64 m= ac, return *idx >=3D dev->num_arl_bins ? -ENOSPC : -ENOENT; } =20 -static int b53_arl_read_25(struct b53_device *dev, u64 mac, +static int b53_arl_read_25(struct b53_device *dev, const u8 *mac, u16 vid, struct b53_arl_entry *ent, u8 *idx) { DECLARE_BITMAP(free_bins, B53_ARLTBL_MAX_BIN_ENTRIES); @@ -1913,14 +1912,13 @@ static int b53_arl_read_25(struct b53_device *dev, = u64 mac, =20 b53_arl_to_entry_25(ent, mac_vid); =20 - if (!(mac_vid & ARLTBL_VALID_25)) { + if (!ent->is_valid) { set_bit(i, free_bins); continue; } - if ((mac_vid & ARLTBL_MAC_MASK) !=3D mac) + if (!ether_addr_equal(ent->mac, mac)) continue; - if (dev->vlan_enabled && - ((mac_vid >> ARLTBL_VID_S_65) & ARLTBL_VID_MASK_25) !=3D vid) + if (dev->vlan_enabled && ent->vid !=3D vid) continue; *idx =3D i; return 0; @@ -1953,9 +1951,9 @@ static int b53_arl_op(struct b53_device *dev, int op,= int port, return ret; =20 if (is5325(dev) || is5365(dev)) - ret =3D b53_arl_read_25(dev, mac, vid, &ent, &idx); + ret =3D b53_arl_read_25(dev, addr, vid, &ent, &idx); else - ret =3D b53_arl_read(dev, mac, vid, &ent, &idx); + ret =3D b53_arl_read(dev, addr, vid, &ent, &idx); =20 /* If this is a read, just finish now */ if (op) --=20 2.43.0 From nobody Fri Dec 19 19:17:19 2025 Received: from mail-ed1-f41.google.com (mail-ed1-f41.google.com [209.85.208.41]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7E50130F921 for ; Fri, 7 Nov 2025 08:08:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762502885; cv=none; b=hlF8EzQ+9o/SkI0DWnwWYi4Ep6dE2gmY8r/QiuwWqRabOfHXX7XLcEhjg827JB6pznCgIleEIePhIz1re8uv/C7atn5BszYnchl63TU6WL7NnKoD2ogPGuK8K57kKUja2uyAeGjTrq5bS9pe3cOgKeFzEbMfsMz3jqR0UV+gaMs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762502885; c=relaxed/simple; bh=j0oyfuN01OPXLd9hyxYNT5N8BjkO/t6pWjUs7ekl2EE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Ic/xTIPDIgaRIVg9Wa1kt0YaPqtjwf9+Alf2Z+DgyBUUdqUlKGXfTksJcrXlIcdLj3P8UXGTCo2dZoh3sMJNpWq4Xm9CI9wKQFDIls3vPCjEF7ZFXWrMb+cnUWIKET2aga7is7g2q4IPZ8Ut+wzxgCwFcd4TJT+64W7H7MQAxDE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=EYy/2jEt; arc=none smtp.client-ip=209.85.208.41 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="EYy/2jEt" Received: by mail-ed1-f41.google.com with SMTP id 4fb4d7f45d1cf-641458f71ffso512425a12.3 for ; Fri, 07 Nov 2025 00:08:03 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1762502882; x=1763107682; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=KUZshOJG4dcKBIAa7zdLK2nV4L6UQD0RZnMTyvlffFQ=; b=EYy/2jEtmw3HC7l/Kq53RqwQFS9qqZAWy0xv1kbIH/rTrAlwBG8mWpn+w5Wf+f11cS 0iRrDl6O7ShPCox0rdRxxc5m7O67aZ7bzCIzPMqhDGVQFn8zW3piucycNDki01QuClCo wH2NjYTtLNXb9M00ZTf+zcKEMkszZWmvjKKaBInuS2AsGvZ0amZvVMSR4thCMu52pXdQ UeymmFx/jw0H7Gu4d71eXs05pJA9OLCuF1YfAZKLd3ZWAaHCJ4M6W5s6+jRnRBAwhsZp caF5LgI358hZ4vnuoSoaEYpH4ycYlufdwqqk8PGciHumvjT8KF+9d6oiLr0+cl9fNW0q PJDw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1762502882; x=1763107682; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=KUZshOJG4dcKBIAa7zdLK2nV4L6UQD0RZnMTyvlffFQ=; b=wFUocbbHzh+R2+lMXfnXPn93kTjXCYftS/qJTnrNcFIA8c45bp6FVQU4CZCtxB603Z +UvAMa+0omNPT7O8N9OsbIvZCz/zbbJcu6d+nFYBjdgJC+gEUmfemjcFCCfy9L9y18Mk paXI9nDmBHndjanIKZjUtHdnK0byZkHFTAlDOPB4zgecyEH+gLY4yzP8bvvQnDzJJdBh p6rTn/2UBgL808zECD5zCSUfpjEq0KSjlUwqE/RwjOqfKMqOrYJEt3Z7rqiYhh+7r3XD ZJotYolZhQr3eksZjpZ1xKJJjSAOaD247P3jGkDbB2elhHnYQPaa7GXWg9qYv03FjHFt JG6Q== X-Forwarded-Encrypted: i=1; AJvYcCU2Illa4ddMKkHFsh0XkZCCrJcT65FMMWIoPfS1NE7qvgcYfSXDpHdq35jAfUnU09H26ddGV0WWzbPFLfI=@vger.kernel.org X-Gm-Message-State: AOJu0Yyjapjd1EZ1RTtNyF+g1SuPtjSgHbRxlrq+ZbL5JOPmLoyu+XDV /xdcoDnqV1qjTlh52NxXhhj16RLEKji9piEFXdXHGOy1+YiQzKsTMEYR X-Gm-Gg: ASbGncsUUV8VCGfBjIM2ohNAZAT+kdA4wSBtUV4YU9qdjyYDGDVlcpGUC1mtJBeB90J pjaj1Wf0XxQfinufI4azaPOTHrYCTD6K2YsD/Y9nGdnEQNCXKYlP/x57J5cI1WMrI3On6dYcC7R c8EvdUkBmtkaKsGX+q8sM0/lV6WL/E4su9nlihZ2BRX/Qq1q74tMawIgXwEuYb63sHvx6fPUEkv gxNPOIi5MwvKlD5GVsCATCofDL4tSXv4tcWC0+MWQku+bjLRupt3Mm27aXmpGsDy/akntanp1o2 Ly9RBaOratLjuDOtLm1ujIWPQDpFx+9bufgkHNjDgpVMLfDZxfPXdj71irEMn+NwcZRceiwLv6a mMUneyiDgeXQAxc3jfCZZFHhAjd8Nli9C1hkbGFzg3BfKiL963TiNrQVx+hSWUe8ilSOcBCDYke 95rvvpPpSAe8umsiJ0Gxi4hK5gwpWn/aEKlc/jxHixrpLn36xhGSdFD2tZDUWTsJvEwJs= X-Google-Smtp-Source: AGHT+IE33si3STkKaWiJ5TOQMCTy4+JpRVeKTJuZw7lB6vjQoOtoBqnMfAW/gzxY8jDDyD0iEzAakw== X-Received: by 2002:a17:907:9617:b0:b70:fede:1b58 with SMTP id a640c23a62f3a-b72c0a5f78dmr243322566b.2.1762502881786; Fri, 07 Nov 2025 00:08:01 -0800 (PST) Received: from localhost (dslb-002-205-018-238.002.205.pools.vodafone-ip.de. [2.205.18.238]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b72bf60ef8asm173802366b.30.2025.11.07.00.08.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 07 Nov 2025 00:08:01 -0800 (PST) From: Jonas Gorski To: Florian Fainelli , Andrew Lunn , Vladimir Oltean , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH net-next 2/8] net: dsa: b53: move reading ARL entries into their own function Date: Fri, 7 Nov 2025 09:07:43 +0100 Message-ID: <20251107080749.26936-3-jonas.gorski@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251107080749.26936-1-jonas.gorski@gmail.com> References: <20251107080749.26936-1-jonas.gorski@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Instead of duplicating the whole code iterating over all bins for BCM5325, factor out reading and parsing the entry into its own functions, and name it the modern one after the first chip with that ARL format, (BCM53)95. Signed-off-by: Jonas Gorski Reviewed-by: Florian Fainelli --- drivers/net/dsa/b53/b53_common.c | 69 +++++++++++--------------------- 1 file changed, 23 insertions(+), 46 deletions(-) diff --git a/drivers/net/dsa/b53/b53_common.c b/drivers/net/dsa/b53/b53_com= mon.c index 1b94cf7b06e8..d99e15a7a6bb 100644 --- a/drivers/net/dsa/b53/b53_common.c +++ b/drivers/net/dsa/b53/b53_common.c @@ -1850,48 +1850,30 @@ static int b53_arl_rw_op(struct b53_device *dev, un= signed int op) return b53_arl_op_wait(dev); } =20 -static int b53_arl_read(struct b53_device *dev, const u8 *mac, - u16 vid, struct b53_arl_entry *ent, u8 *idx) +static void b53_arl_read_entry_25(struct b53_device *dev, + struct b53_arl_entry *ent, u8 idx) { - DECLARE_BITMAP(free_bins, B53_ARLTBL_MAX_BIN_ENTRIES); - unsigned int i; - int ret; - - ret =3D b53_arl_op_wait(dev); - if (ret) - return ret; - - bitmap_zero(free_bins, dev->num_arl_bins); - - /* Read the bins */ - for (i =3D 0; i < dev->num_arl_bins; i++) { - u64 mac_vid; - u32 fwd_entry; + u64 mac_vid; =20 - b53_read64(dev, B53_ARLIO_PAGE, - B53_ARLTBL_MAC_VID_ENTRY(i), &mac_vid); - b53_read32(dev, B53_ARLIO_PAGE, - B53_ARLTBL_DATA_ENTRY(i), &fwd_entry); - b53_arl_to_entry(ent, mac_vid, fwd_entry); + b53_read64(dev, B53_ARLIO_PAGE, B53_ARLTBL_MAC_VID_ENTRY(idx), + &mac_vid); + b53_arl_to_entry_25(ent, mac_vid); +} =20 - if (!ent->is_valid) { - set_bit(i, free_bins); - continue; - } - if (!ether_addr_equal(ent->mac, mac)) - continue; - if (dev->vlan_enabled && ent->vid !=3D vid) - continue; - *idx =3D i; - return 0; - } +static void b53_arl_read_entry_95(struct b53_device *dev, + struct b53_arl_entry *ent, u8 idx) +{ + u32 fwd_entry; + u64 mac_vid; =20 - *idx =3D find_first_bit(free_bins, dev->num_arl_bins); - return *idx >=3D dev->num_arl_bins ? -ENOSPC : -ENOENT; + b53_read64(dev, B53_ARLIO_PAGE, B53_ARLTBL_MAC_VID_ENTRY(idx), + &mac_vid); + b53_read32(dev, B53_ARLIO_PAGE, B53_ARLTBL_DATA_ENTRY(idx), &fwd_entry); + b53_arl_to_entry(ent, mac_vid, fwd_entry); } =20 -static int b53_arl_read_25(struct b53_device *dev, const u8 *mac, - u16 vid, struct b53_arl_entry *ent, u8 *idx) +static int b53_arl_read(struct b53_device *dev, const u8 *mac, + u16 vid, struct b53_arl_entry *ent, u8 *idx) { DECLARE_BITMAP(free_bins, B53_ARLTBL_MAX_BIN_ENTRIES); unsigned int i; @@ -1905,12 +1887,10 @@ static int b53_arl_read_25(struct b53_device *dev, = const u8 *mac, =20 /* Read the bins */ for (i =3D 0; i < dev->num_arl_bins; i++) { - u64 mac_vid; - - b53_read64(dev, B53_ARLIO_PAGE, - B53_ARLTBL_MAC_VID_ENTRY(i), &mac_vid); - - b53_arl_to_entry_25(ent, mac_vid); + if (is5325(dev) || is5365(dev)) + b53_arl_read_entry_25(dev, ent, i); + else + b53_arl_read_entry_95(dev, ent, i); =20 if (!ent->is_valid) { set_bit(i, free_bins); @@ -1950,10 +1930,7 @@ static int b53_arl_op(struct b53_device *dev, int op= , int port, if (ret) return ret; =20 - if (is5325(dev) || is5365(dev)) - ret =3D b53_arl_read_25(dev, addr, vid, &ent, &idx); - else - ret =3D b53_arl_read(dev, addr, vid, &ent, &idx); + ret =3D b53_arl_read(dev, addr, vid, &ent, &idx); =20 /* If this is a read, just finish now */ if (op) --=20 2.43.0 From nobody Fri Dec 19 19:17:19 2025 Received: from mail-ed1-f47.google.com (mail-ed1-f47.google.com [209.85.208.47]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id ACE4930FC1D for ; Fri, 7 Nov 2025 08:08:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762502886; cv=none; b=i4CeXCTmnBnRZYKVy9Q00DWsKC78W5bre/fV//mWxSGavxMYl+upR9H5qnAJ3tOQm2SeAkKHolpCgpYTblkUj++9iW7MgusFwF0SVm/a0PxYFpXzxlD0DPaHTvbLLhhi7r/QFXF/o6aXvlNK+5oSj/FmwS+8fbC4/z4/H6V9Mmo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762502886; c=relaxed/simple; bh=c/ypx/7KDRitSfXO3iv/XG5GJJGXfdxf5+ySmcx3JiY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Y05IKb0rf30DC4emO1n5kqu07aYYl8Ek1Sr26NqaH70mag175boTxWatHL3pxhNX99mLeDJzDbgMijGAffekY276cA4GaUMyVAgn3FmQ7V98e0otjBkE+ZV18vJA7tmqvSjgh2j98YhN/TD+Ct8ZVrXo+OMPwXyqKNeb520C6Fo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=EkxmejsY; arc=none smtp.client-ip=209.85.208.47 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="EkxmejsY" Received: by mail-ed1-f47.google.com with SMTP id 4fb4d7f45d1cf-640aa1445c3so758565a12.1 for ; Fri, 07 Nov 2025 00:08:04 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1762502883; x=1763107683; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=AliuwcJnqc6fNYruuHtll/VWN2+GFQQMz8uQSPpdEUc=; b=EkxmejsYZ6ak11fC9YR7vvOH6qQY0SIK4nvRhOeX+DbIZ3+UVh1CwmEZP9yXKLwLmo YNPkqSx08pEcc9aWX/DgjSqVNkYbYFy2Va68hQTtP+110bJ/sP9Hd9p1+1SgqHkm7LCO 0DWygUV15EUDIx/azunGi64+RLVSzFozW+8VI1b3yXpTXqPus0k4TZP4FQUYLB7SqCH3 v+nqmBozp7GiWWcaQLSOKKrG4vUX6XvtsEsmqwnom18ccXT/71p9U4SrueLqZxgEuPSf h2nDSkkwgeguRYJ3gz7aZag+defIhhI3zW/ch6YtR4gLbHO0CeF7P7cEJLhBXGlwGRfj IH6A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1762502883; x=1763107683; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=AliuwcJnqc6fNYruuHtll/VWN2+GFQQMz8uQSPpdEUc=; b=bpnVC2Gn/GrgD+Z3Gxg6fCDKIVVXRE5KJWe2BYTP4HRh0Gzrtt0EocR3MjVOX9eVGL kTnLKhM6MpaKeCjlijXP1sOWm+3aKvpnkOJl3Z6I3YuVPETSUcXIg7TuzPvBWM66g++t woehok7/wnW9FMovGfSTOhrg9IHaKKnV8wdapioJOOoik++Zk30dNdRgkkCShgWso0D1 iF9w4LQeGibQ4wuDpuFg7GpBRZy0i9O5yOuUDpad/u4RtfVY9/H/xS5MDlHyI8fEz+UL cClkdx3Y8ishGK4tCQtY6q5fMHahqH4YzzHHUvp5MUUAa7OfQyg6BG0MIapriKPO4Jwz G/gg== X-Forwarded-Encrypted: i=1; AJvYcCW7h8GxxZsBUQGIfCRGR5Z8RC+CAyVtvbXJYosZmPZKyLK+qxD7DAzDdtxKR+jmc0AYII0iJV/C0POhc30=@vger.kernel.org X-Gm-Message-State: AOJu0YxHKGObKgi4omSURGEIEOyMuqU9tRFa+kwtDuKLBoTvlNLIhDVH AzCGKpBgUZHGJAnb1CgyHEwik4CedkOiM/PFl55d6oMe7YnYiKnkiQie X-Gm-Gg: ASbGncuvewdOFCxnOmaP+4uEmolPKMvfbtUoNL56kQ5yAWwizQmZKNjzZZLWiLVfOVC uy37+4E/NM/5Q5WRLEOzPvJsMneZnCQQFEODqZDrf2eT/ERoV6fdVnCUPrmkNIlHgq7OnXQAWTC 6yIqHytXxnvBrvS/6qmq8ArQmXXLqgC2ArX2VC22FzM/kqmqL4k4viiRDCSZoxtbT6u/bL/ftX5 GDd5P4gBkGVAc5W933PyKf3WwVyLj//0/10swQP2z5HNbWIJXqvUsJ0cB0/Nn6kTZmQEXclPd8g YKjNqwm4MrOveMiqFJ0uxfLoIwSUeAE7ALK/fgrqikMdCRxXQWI9HnrcbT+SQb5kTWkB4MDu08z MbVgL65inzcfW2rRgfPG8iw9S978HclBsNy+CZVd96y+Bd/zUjJKWgY/RyBegXM6aZEkE2C348a 4a3QzWQovxw5SsyjAggMRl48KH+5lvw5Es7jBWGAOW2tDFPt5CgDJXuxqU X-Google-Smtp-Source: AGHT+IEstEw1exNyTbFuvnvrUK3nX+jDWzrwRf9MNF5NOkcJ6wg9CRw5gIOyRK6s0Hlt8IeRAvgQVw== X-Received: by 2002:a17:907:9607:b0:b70:b5b9:1f82 with SMTP id a640c23a62f3a-b72c0abcb78mr238175466b.31.1762502882846; Fri, 07 Nov 2025 00:08:02 -0800 (PST) Received: from localhost (dslb-002-205-018-238.002.205.pools.vodafone-ip.de. [2.205.18.238]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b72d32e25f6sm46179466b.5.2025.11.07.00.08.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 07 Nov 2025 00:08:02 -0800 (PST) From: Jonas Gorski To: Florian Fainelli , Andrew Lunn , Vladimir Oltean , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH net-next 3/8] net: dsa: b53: move writing ARL entries into their own functions Date: Fri, 7 Nov 2025 09:07:44 +0100 Message-ID: <20251107080749.26936-4-jonas.gorski@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251107080749.26936-1-jonas.gorski@gmail.com> References: <20251107080749.26936-1-jonas.gorski@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Move writing ARL entries into individual functions for each format. Signed-off-by: Jonas Gorski Reviewed-by: Florian Fainelli --- drivers/net/dsa/b53/b53_common.c | 38 ++++++++++++++++++++++---------- 1 file changed, 26 insertions(+), 12 deletions(-) diff --git a/drivers/net/dsa/b53/b53_common.c b/drivers/net/dsa/b53/b53_com= mon.c index d99e15a7a6bb..9eb7ca878e30 100644 --- a/drivers/net/dsa/b53/b53_common.c +++ b/drivers/net/dsa/b53/b53_common.c @@ -1860,6 +1860,16 @@ static void b53_arl_read_entry_25(struct b53_device = *dev, b53_arl_to_entry_25(ent, mac_vid); } =20 +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) { @@ -1872,6 +1882,19 @@ static void b53_arl_read_entry_95(struct b53_device = *dev, b53_arl_to_entry(ent, mac_vid, fwd_entry); } =20 +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) { @@ -1912,9 +1935,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 =3D 0; u8 idx =3D 0; + u64 mac; int ret; =20 /* Convert the array into a 64-bit MAC */ @@ -1947,7 +1969,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 =3D 0; break; default: dev_dbg(dev->dev, "{%pM,%.4d} found, using idx: %d\n", @@ -1975,16 +1996,9 @@ static int b53_arl_op(struct b53_device *dev, int op= , int port, ent.is_age =3D 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); =20 return b53_arl_rw_op(dev, 0); } --=20 2.43.0 From nobody Fri Dec 19 19:17:19 2025 Received: from mail-ej1-f51.google.com (mail-ej1-f51.google.com [209.85.218.51]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B7DA03101AB for ; Fri, 7 Nov 2025 08:08:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762502887; cv=none; b=pLjwxjhAKX1r0usY+L6L72FgRUKH1OZuFCIPMkE1YNDfSp8CvtOOMQhROZIudZ+ctsz2EbuQn77tdCgUzK/JgqcRPtzVDCY2Tb2V/SmAnjlWUCbiIoA8qgiZ18Z+Rn2X6e0h6QxlcKZzbBSj+3O8fYANobputu15Uzc71yHLA9w= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762502887; c=relaxed/simple; bh=T+fv7B4EGOErJ4vvULFWmw8UusTVspY0S65zOSRYCp4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=UoRMo60UNdeV9XyOdUIwwQE+7v+4YkDePzPkniGBPXkYNzyQVcm/fp534gB2C3m9p7//DRPQXVGECfGHIZJGvSXWajeqHVoWhZCFErch4by8nnEdQph432QVUSX5IqpVdq5xCH7rIT8TBwDAnt5ALBlCfB77i/v08w/o+BpEs90= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=MvAUggh/; arc=none smtp.client-ip=209.85.218.51 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="MvAUggh/" Received: by mail-ej1-f51.google.com with SMTP id a640c23a62f3a-b713c7096f9so62263466b.3 for ; Fri, 07 Nov 2025 00:08:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1762502884; x=1763107684; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=/xZ5yli4HyPeAHciL3B8npkM3Dz4xiXZ5nUJPMyAy7w=; b=MvAUggh/j9KbagwjBgk/EWhlAc9pkXVQolxRfhDIb4KSplp2OHsbD8sJwBLi7AfyzX D6N1Dl9AG9Y/wHQiJCbO9khKXe6X9cTGDC9UmCDtCxclGCQkdYekgKZGhbFgJbHY8fVw 85IW4mhTm3kDJVN2AoiALH6BIUm0Ma7Q09IMG/gMJ0xBQXY5yAVGBfUaAYXrpglcR81N M5fEKOkGCCIqv2YVSdivla4EOoL3nduNJkvGqP8zbXJ8NUU/z/9JSYdb8lhQXShI24jA cyaZrAaUsxK4XbLDWUEbtNB4K14LU2eOa1/9XfSfXEYQML5bodKI8As0otegYcpub80U Rg+w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1762502884; x=1763107684; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=/xZ5yli4HyPeAHciL3B8npkM3Dz4xiXZ5nUJPMyAy7w=; b=xLgnetw5XzICr5qaVr1/SytjL0rfSBCLivpwLNtdZrMz7PI6A4bPQpWwZSEtMATf7K gfXdHr4YAOpY6YZTDDkLjo3LbnROZ7xg8gXAEPbbjoKJx7QwxUWVeDFZUlGcRyCAzGr5 X2V7ctqly9cf5IN+Bd1LywrFwdVYT1H1XJSQem0qVz88Om+MZW9mb7uaJnLPXXmxLcue WPin3dacFQP59TFlm9YWumNLcK3kM2TyH9eOuh3+VMQczy+6L85psdX83X7avUBJBzN0 Bi3opSeB9cmFxDwEST7rATf4zhc7WEDYrSLD9syFu0WAwYYfTydln54NzEXMGI6A2Cp2 IFug== X-Forwarded-Encrypted: i=1; AJvYcCX+fNm2vfOeuNfyfFRx6DQ0B1sb/wBkEoaQEyV+Ev6c4s9+6l+JEpKDea3mjvCOCsfMSS4LKy/3NZjAnpk=@vger.kernel.org X-Gm-Message-State: AOJu0YxhUKRnFzLTKZ/85SiDIITFbwkAJpDSSAgCpvx2tHkXqYlvfYwz zbh+MTmFohZoRHu+4Mac+1wXp4jShT2QVic9WNw9ss1Z3FESt8swRXkJ X-Gm-Gg: ASbGnctzP5BBQda5tkGq1D+2LMzFGgiFC966K6LiZWBZcOSODKE79Y8jhWhgNXeB5lD MEYmKiiKOZNtmaOJwBkoR3n4KE+uCuY3tRIrLUo2WghENuugwPWq0QGaPNW7Khnfd8cIomR0Vl0 nVs8nmBZHxS/wk0K8CDi7/sw93ey9vgUtj1W1Gh2Mo1P+IfOLGRI0JZHna3E2eSQrf3hNvywaO3 eaSG3H9KfGzbqky6pm4R8UsqK12GJqtY7fY56QH/IcxwF10dfcLI/6AeVSUqaMjbJ4pD+z42VuP quXdy7Q4KqTIVQ3LFpKTFcvGdnkcZJDNOlms3ACAdDm+7fnyYxRXRC6FzZi4hchq0bbOckrW/q2 7qSDiJbCcEIGZL7JlH6Mb3ok9M+zRwETBtTfswUA5Z+wpdY8YViKbkpQDMr9FYpuLZ22g7lTgub nstvLSBRjuWPeth3AcDLLMQqw0g8AaO2nGi58Bj6UsaY/9Sy8Fe+RS4lER X-Google-Smtp-Source: AGHT+IH9b/MYYIuDyWdT7ZTBQkoaDfwy59F6a7uHK4JT6ZExE1cuece4EF876eM8gMqHiUFkgjKe3Q== X-Received: by 2002:a17:907:9608:b0:b6d:5718:d43f with SMTP id a640c23a62f3a-b72c0abc187mr227415266b.39.1762502884014; Fri, 07 Nov 2025 00:08:04 -0800 (PST) Received: from localhost (dslb-002-205-018-238.002.205.pools.vodafone-ip.de. [2.205.18.238]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b72bf60ef8asm173812266b.30.2025.11.07.00.08.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 07 Nov 2025 00:08:03 -0800 (PST) From: Jonas Gorski To: Florian Fainelli , Andrew Lunn , Vladimir Oltean , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH net-next 4/8] net: dsa: b53: provide accessors for accessing ARL_SRCH_CTL Date: Fri, 7 Nov 2025 09:07:45 +0100 Message-ID: <20251107080749.26936-5-jonas.gorski@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251107080749.26936-1-jonas.gorski@gmail.com> References: <20251107080749.26936-1-jonas.gorski@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" 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 Reviewed-by: Florian Fainelli --- drivers/net/dsa/b53/b53_common.c | 37 +++++++++++++++++++++----------- 1 file changed, 24 insertions(+), 13 deletions(-) diff --git a/drivers/net/dsa/b53/b53_common.c b/drivers/net/dsa/b53/b53_com= mon.c index 9eb7ca878e30..b13437ea21a0 100644 --- a/drivers/net/dsa/b53/b53_common.c +++ b/drivers/net/dsa/b53/b53_common.c @@ -2033,18 +2033,37 @@ int b53_fdb_del(struct dsa_switch *ds, int port, } EXPORT_SYMBOL(b53_fdb_del); =20 -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 =3D 1000; - u8 reg, offset; + u8 offset; + + if (is5325(dev) || is5365(dev)) + offset =3D B53_ARL_SRCH_CTL_25; + else + offset =3D 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; =20 if (is5325(dev) || is5365(dev)) offset =3D B53_ARL_SRCH_CTL_25; else offset =3D B53_ARL_SRCH_CTL; =20 + b53_write8(dev, B53_ARLIO_PAGE, offset, val); +} + +static int b53_arl_search_wait(struct b53_device *dev) +{ + unsigned int timeout =3D 1000; + u8 reg; + do { - b53_read8(dev, B53_ARLIO_PAGE, offset, ®); + b53_read_arl_srch_ctl(dev, ®); if (!(reg & ARL_SRCH_STDN)) return -ENOENT; =20 @@ -2099,23 +2118,15 @@ int b53_fdb_dump(struct dsa_switch *ds, int port, unsigned int count =3D 0, results_per_hit =3D 1; struct b53_device *priv =3D ds->priv; struct b53_arl_entry results[2]; - u8 offset; int ret; - u8 reg; =20 if (priv->num_arl_bins > 2) results_per_hit =3D 2; =20 mutex_lock(&priv->arl_mutex); =20 - if (is5325(priv) || is5365(priv)) - offset =3D B53_ARL_SRCH_CTL_25; - else - offset =3D B53_ARL_SRCH_CTL; - /* Start search operation */ - reg =3D ARL_SRCH_STDN; - b53_write8(priv, B53_ARLIO_PAGE, offset, reg); + b53_write_arl_srch_ctl(priv, ARL_SRCH_STDN); =20 do { ret =3D b53_arl_search_wait(priv); --=20 2.43.0 From nobody Fri Dec 19 19:17:19 2025 Received: from mail-ed1-f46.google.com (mail-ed1-f46.google.com [209.85.208.46]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B4720310640 for ; Fri, 7 Nov 2025 08:08:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762502888; cv=none; b=RtQ0dTvFYFS8kcRuupfVhM2mP3IO5yHmqO7qol1nUiQB2Lc+eJ2TWuVj9fKYQMMSiLOZu23CLBdFIB5JHZUA1anV/EdLq+7ynmwWL49EytsRZJNz6EABM7BMS6f7HC9/8h537rmjzYnwKx+cq63LiAA2D2AUpKK/Amci4bujW3k= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762502888; c=relaxed/simple; bh=/w5CveTbO/WqJsGriA2LFd+qtHXklKNofJizjnX0VcQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=tZhhPt8YTUySUpMETmVcHgpiwi3KPwHRtyKxkOHs74IjQ/Ku9s7bkbG6+5yx+8cEj6XmQmNSB0wXJSNDp3fyZLt6hScXd11qojZRXib1G7vb90u2dchple5MeSbe0n3K82CItpSvBBtG9BsHVCFa/mE4HSglLiS3+zo5MVbzD4c= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=msWw+FDy; arc=none smtp.client-ip=209.85.208.46 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="msWw+FDy" Received: by mail-ed1-f46.google.com with SMTP id 4fb4d7f45d1cf-640ca678745so822760a12.2 for ; Fri, 07 Nov 2025 00:08:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1762502885; x=1763107685; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=wTdKjGxTrhEWGEzux1V481YH4d93VhARs2gtogCyhH0=; b=msWw+FDyqZzwIf7IL1JC+Xsf8HcXRu+HPIPSU4jrc98hgKcCc6AGShE6jUi7Pp/S+2 /NEEvCb1Y88HIYeuTM8cXIbEjCO+iW6GFKZH+N9IuT3hcldlR3xjjCS8PftolGgB5sHa qaWjxNPSy5YdXepG/AdR+HK9TkxWXYtnL6Xn7cWumUow0yo9FpBFI+/uol3xRuX104yR RLW1vfg0xk0kX+4MnOa23DzKvwuQ0OVSyunyLK5Sw9Or8PJPaWR0AmpjyrKEPpI6ukpE q4EUMfY5z4rkYixl40OUWJQv1UU9QIrX1iNDzVPiDRGO9Y1dln4RsEpFutZAdLWVGzPw eBQw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1762502885; x=1763107685; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=wTdKjGxTrhEWGEzux1V481YH4d93VhARs2gtogCyhH0=; b=IxQq/JqdmC57WAaq78Hj1UiTz0XNeRIpWqOdzo5jfSS+woeKLvqpgx1GGe30WRI19p Vm5fHLDo7ISdrqYsY7PmSpun4cINxZ+ZpXU+SDmTdMnXXkmrygWmEFR41sSLRp34xk3X TcshsE/lCtvEBfywUTjVKOdM0XRtRwhFFZkqolgfqlnyWUu5BfUpKGEIrxsOinjEscMN Z9xQIVXUJTBPQKZ61NNC37BGotKUJS1ZH/krfAS7Y1bltyUUF3PnzO8sIIMlk7rSnnnv 1ObUMZNhKBPeU717XzzBWmLXr6AdD4exXdxkN5SsrNMIFjnFmsoEeyOi3HZHNQsZr0Nh LHTQ== X-Forwarded-Encrypted: i=1; AJvYcCUWJx+jaA9b6pNgs/sNaueKTtYmjHLYjBFtSCQddwJ1gcx4LQ+7wqHeC2qniblbGCBmxWmCO8ZUZ/ZHYhQ=@vger.kernel.org X-Gm-Message-State: AOJu0Yz/xfkQzxCBzwOHoN4CnxXLI2zdPxxCqCMIz9SOchPWOjxfqA8y waJsPTJ7tBlww8DgKNODbVa4XGiS0bEybxlDu3Y2eEDT5nE6kiLJhRTh X-Gm-Gg: ASbGncsvxXgr15PA6mPPZtd3wF1h6M8N+s/v9ntBS155di6DLYQDmQJYgmmeW5JC/tZ UbGq29d6+Nz2I1/3yUNnSzPoU/Pwl5BCvveMt4or7a2zo/z3SeiCQx5jUsIpb6ekJgU8bPZPusC cio6G6CcyWAVoTzDfLMiQssdgtWGZPkAct2Q73eZAgN74n0Amp433yVnmROJTwk8Zpw4dA58YEq ivDJhkCWkVif4IdqJZBVmUdlPpdU0uAhMxyag7yVbGbHnwDEtQfEx32ULr0GvjQoLMJkV+Rbh16 up1mWk/ReyuVI4K5ca+Grd48mgjHIzJKWiTHacM2hK7MoX9mOcpid4aidpe6BmYkHAmTOHHtxAE el0ffBrqoXiDNUbf4PwZb7jByH3T1KtIwBMmIt5y7eBuChZZXB1htJywOQWn8euFR0Iq3M8OKbg DKlDOgLpoMB/wrMd3bZP2HMvk9aNCbKg2mMuEpcgqpvY6hr3RX3/u1GOcn X-Google-Smtp-Source: AGHT+IGqYCR86ksAXMSbxGS3kKDImFaO+wj0FVOjmRbbKMm9CWkZuNs3ibEZwfK+6/EwUPZd5R0fMQ== X-Received: by 2002:a17:907:c0d:b0:b70:ac7a:2a8b with SMTP id a640c23a62f3a-b72c0928d62mr192969366b.19.1762502885065; Fri, 07 Nov 2025 00:08:05 -0800 (PST) Received: from localhost (dslb-002-205-018-238.002.205.pools.vodafone-ip.de. [2.205.18.238]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b72bf312e25sm177083666b.20.2025.11.07.00.08.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 07 Nov 2025 00:08:04 -0800 (PST) From: Jonas Gorski To: Florian Fainelli , Andrew Lunn , Vladimir Oltean , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH net-next 5/8] net: dsa: b53: split reading search entry into their own functions Date: Fri, 7 Nov 2025 09:07:46 +0100 Message-ID: <20251107080749.26936-6-jonas.gorski@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251107080749.26936-1-jonas.gorski@gmail.com> References: <20251107080749.26936-1-jonas.gorski@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Split reading search entries into a function for each format. Signed-off-by: Jonas Gorski Reviewed-by: Florian Fainelli --- drivers/net/dsa/b53/b53_common.c | 56 ++++++++++++++++++++++---------- 1 file changed, 38 insertions(+), 18 deletions(-) diff --git a/drivers/net/dsa/b53/b53_common.c b/drivers/net/dsa/b53/b53_com= mon.c index b13437ea21a0..fa4cf6ceddb8 100644 --- a/drivers/net/dsa/b53/b53_common.c +++ b/drivers/net/dsa/b53/b53_common.c @@ -2076,28 +2076,48 @@ static int b53_arl_search_wait(struct b53_device *d= ev) return -ETIMEDOUT; } =20 -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; =20 - 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_0_MACVID_25, + &mac_vid); + b53_arl_to_entry_25(ent, mac_vid); +} =20 - 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_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); } =20 static int b53_fdb_copy(int port, const struct b53_arl_entry *ent, --=20 2.43.0 From nobody Fri Dec 19 19:17:19 2025 Received: from mail-ed1-f50.google.com (mail-ed1-f50.google.com [209.85.208.50]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 168FC311975 for ; Fri, 7 Nov 2025 08:08:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.50 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762502890; cv=none; b=JLwvEnmGWHnRT7XHRe2HYxfgDs0umjVP62AQ9CekJAi9ke5NTPyx4I8M3aciY1yPViDc+QnZDP4rtWfsfwhwecsSdwJDLNoaYD8XXUg37U2z24GXHcTzApVG/j4IFTi+6kNlRJXXgH4X6MPHlSQYXz7VD3bgicGiiIi/bPMRgOA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762502890; c=relaxed/simple; bh=fn0piwHHX8ir16QQNvantQ27c+ublvYdiUMR9gXOvsw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=TkwATZMp9UR8ugx3LfH521lg6Bn4JKOJGRWXpzIRkidRU7thQpIBWxDyJt/5hYYF7kelPEYqiIwvmPRi4+jekzy0BUMazmy3j/Hn6jvfsN23TuH9xRmdeHjff4jU6oP5HzAIblHDMwiVClg6tquftkyfMmPIO7wT8TkNQse88W0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=D2+4ZIeQ; arc=none smtp.client-ip=209.85.208.50 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="D2+4ZIeQ" Received: by mail-ed1-f50.google.com with SMTP id 4fb4d7f45d1cf-640e9f5951aso721774a12.1 for ; Fri, 07 Nov 2025 00:08:07 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1762502886; x=1763107686; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=KAbW6u5pPeCbc23UbdkfRXIbK91z4t3E/qRGXTD33Cg=; b=D2+4ZIeQwm7/zEgETTqykOPKMEZjtfpQQKgUSmTfouX0gkgL8eKCYE3YKZ99YzIsQa Fi8vhsvCvxMy5TbjariD77vMn0ReUvot/4r7zmIwzOidGW87pZ8n6LEalD/DH3IqgZBb fu2lQ+5KJuhkSvQEGA/zRAhXwksz197vsYHKJWJZpffbh2WL1OJ+QHc/pdjz+zsgzbX+ 3b1Ibo8SxA/VxnrC8wBEArYCP25P9VxyLXovNb99JVJhR4TQRpO6EC/udAmIzolOIT2K 3K6ca2BsFHSgMJVxEuMrdxSiIyig9YCyBDkanG9nM3ZyIndQzn/2ME8E587l8N5zzdWJ Cqbw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1762502886; x=1763107686; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=KAbW6u5pPeCbc23UbdkfRXIbK91z4t3E/qRGXTD33Cg=; b=FlAT5ZkRjefRolM56ShYulywMjsOFgTJe0nrD4B6Ic9XvzRSKfGoLBvtjoRQPtcVhf VgC1wE4fBMalpVSf9tRSRPTxI29lcLRt9c3JHg4c6t54samURi5UPpiJiHewWM8s/iER V3lfR+8mRHftoSXPuI9pED4DTj5cHoy7Mn3KLrAbo7asMGVkrxmHXGBXMHbGyLUZv6g7 vEcJbs/ApbHfJXT5tGloYmpbo4ieOoaTJX5Ti6nRNmhGpCVwuulK8lETeGA6T4P9tBjo 8dLVRKSP+ludR/2S/XZkBRqZskcdenwhXJ9CODTf9byhWdNDOwPIHi6kn8HfgU8Str6n 1ZuQ== X-Forwarded-Encrypted: i=1; AJvYcCUhC++j6jqEsj8uBMOs6oxHLrNRlqspm0IOEsM10U/BdV77egXzDQjH2codBGWhr9CmBG0IhLWjTlovWeE=@vger.kernel.org X-Gm-Message-State: AOJu0YzAWkkTDre+tScld36xNfC8e54UqI283TRjYGyts5TywZ3exlP4 rLob6C/be6Yk2vXnPhRxZT7NqeAFWTpjMj+pD1scrcqpQa51A1KAzE7P X-Gm-Gg: ASbGncs/m2YUJFLHEbkbzUTlk86kc7qOD+iY9LOEawJVV9VrkyX1soS3wGjC12iOUQJ z98es2v98LL5i6jugcvyRstrW9Tl3wzMjFYMNjLQaEjG0D6Q3u41lEL6ojg+x0CgkVBxgWY3Ks5 BpE+GqDqrvLRjiSydmRVvUIAntJiaumzYRDUNKtHPhs/NxnELUPMDi1JxRAQI37lIwkU/L2GM0X d3riYwlQqVgH6ZAMTT9ndkTCdGSu5lDOjNLBwFDALHmVvqv4kpvl20FBXyZX/1gBElYacm8X+eQ Hng4dXittP2IQbIBzf4+yZh7zgU82tiw+GzTmhjCWli26YG1oRviC3cUmhW3fWeer6of3v4TQtj oj6SdVqPj0KxUwR8NhVLPQGoSsoqw3EVnVs1/wTXnWaBPxMtVpcGe+98Nt+Icz+hVNM1ED6JqaV iL9LqvwqwQ++3jvKrh73JpocXm5i1tnA/iTUgCdFX6H3I5aRljUEkUG+E/Gc9YXUOfAmY= X-Google-Smtp-Source: AGHT+IF7O7QJ2kAFACQQzwx2SwACX6580PsjZQMl5XtCZs1f6ZD3zs+9sKXPqkpiDb12JYf6ussacw== X-Received: by 2002:a17:907:3e88:b0:b5c:6e0b:3706 with SMTP id a640c23a62f3a-b72d0a3a93bmr100861766b.13.1762502886219; Fri, 07 Nov 2025 00:08:06 -0800 (PST) Received: from localhost (dslb-002-205-018-238.002.205.pools.vodafone-ip.de. [2.205.18.238]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b72bf97d43bsm179882466b.45.2025.11.07.00.08.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 07 Nov 2025 00:08:05 -0800 (PST) From: Jonas Gorski To: Florian Fainelli , Andrew Lunn , Vladimir Oltean , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH net-next 6/8] net: dsa: b53: move ARL entry functions into ops struct Date: Fri, 7 Nov 2025 09:07:47 +0100 Message-ID: <20251107080749.26936-7-jonas.gorski@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251107080749.26936-1-jonas.gorski@gmail.com> References: <20251107080749.26936-1-jonas.gorski@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Now that the differences in ARL entry formats are neatly contained into functions per chip family, wrap them into an ops struct and add wrapper functions to access them. Signed-off-by: Jonas Gorski Reviewed-by: Florian Fainelli --- drivers/net/dsa/b53/b53_common.c | 67 ++++++++++++++++++++++---------- drivers/net/dsa/b53/b53_priv.h | 30 ++++++++++++++ 2 files changed, 76 insertions(+), 21 deletions(-) diff --git a/drivers/net/dsa/b53/b53_common.c b/drivers/net/dsa/b53/b53_com= mon.c index fa4cf6ceddb8..c69022cc85bf 100644 --- a/drivers/net/dsa/b53/b53_common.c +++ b/drivers/net/dsa/b53/b53_common.c @@ -1910,10 +1910,7 @@ static int b53_arl_read(struct b53_device *dev, cons= t u8 *mac, =20 /* Read the bins */ for (i =3D 0; i < dev->num_arl_bins; i++) { - if (is5325(dev) || is5365(dev)) - b53_arl_read_entry_25(dev, ent, i); - else - b53_arl_read_entry_95(dev, ent, i); + b53_arl_read_entry(dev, ent, i); =20 if (!ent->is_valid) { set_bit(i, free_bins); @@ -1995,10 +1992,7 @@ static int b53_arl_op(struct b53_device *dev, int op= , int port, ent.is_static =3D true; ent.is_age =3D false; memcpy(ent.mac, addr, ETH_ALEN); - if (is5325(dev) || is5365(dev)) - b53_arl_write_entry_25(dev, &ent, idx); - else - b53_arl_write_entry_95(dev, &ent, idx); + b53_arl_write_entry(dev, &ent, idx); =20 return b53_arl_rw_op(dev, 0); } @@ -2109,17 +2103,6 @@ static void b53_arl_search_read_95(struct b53_device= *dev, u8 idx, b53_arl_to_entry(ent, mac_vid, fwd_entry); } =20 -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, dsa_fdb_dump_cb_t *cb, void *data) { @@ -2153,13 +2136,13 @@ int b53_fdb_dump(struct dsa_switch *ds, int port, if (ret) break; =20 - b53_arl_search_rd(priv, 0, &results[0]); + b53_arl_search_read(priv, 0, &results[0]); ret =3D b53_fdb_copy(port, &results[0], cb, data); if (ret) break; =20 if (results_per_hit =3D=3D 2) { - b53_arl_search_rd(priv, 1, &results[1]); + b53_arl_search_read(priv, 1, &results[1]); ret =3D b53_fdb_copy(port, &results[1], cb, data); if (ret) break; @@ -2688,6 +2671,24 @@ static const struct dsa_switch_ops b53_switch_ops = =3D { .port_change_mtu =3D b53_change_mtu, }; =20 +static const struct b53_arl_ops b53_arl_ops_25 =3D { + .arl_read_entry =3D b53_arl_read_entry_25, + .arl_write_entry =3D b53_arl_write_entry_25, + .arl_search_read =3D b53_arl_search_read_25, +}; + +static const struct b53_arl_ops b53_arl_ops_65 =3D { + .arl_read_entry =3D b53_arl_read_entry_25, + .arl_write_entry =3D b53_arl_write_entry_25, + .arl_search_read =3D b53_arl_search_read_65, +}; + +static const struct b53_arl_ops b53_arl_ops_95 =3D { + .arl_read_entry =3D b53_arl_read_entry_95, + .arl_write_entry =3D b53_arl_write_entry_95, + .arl_search_read =3D b53_arl_search_read_95, +}; + struct b53_chip_data { u32 chip_id; const char *dev_name; @@ -2701,6 +2702,7 @@ struct b53_chip_data { u8 duplex_reg; u8 jumbo_pm_reg; u8 jumbo_size_reg; + const struct b53_arl_ops *arl_ops; }; =20 #define B53_VTA_REGS \ @@ -2720,6 +2722,7 @@ static const struct b53_chip_data b53_switch_chips[] = =3D { .arl_buckets =3D 1024, .imp_port =3D 5, .duplex_reg =3D B53_DUPLEX_STAT_FE, + .arl_ops =3D &b53_arl_ops_25, }, { .chip_id =3D BCM5365_DEVICE_ID, @@ -2730,6 +2733,7 @@ static const struct b53_chip_data b53_switch_chips[] = =3D { .arl_buckets =3D 1024, .imp_port =3D 5, .duplex_reg =3D B53_DUPLEX_STAT_FE, + .arl_ops =3D &b53_arl_ops_65, }, { .chip_id =3D BCM5389_DEVICE_ID, @@ -2743,6 +2747,7 @@ static const struct b53_chip_data b53_switch_chips[] = =3D { .duplex_reg =3D B53_DUPLEX_STAT_GE, .jumbo_pm_reg =3D B53_JUMBO_PORT_MASK, .jumbo_size_reg =3D B53_JUMBO_MAX_SIZE, + .arl_ops =3D &b53_arl_ops_95, }, { .chip_id =3D BCM5395_DEVICE_ID, @@ -2756,6 +2761,7 @@ static const struct b53_chip_data b53_switch_chips[] = =3D { .duplex_reg =3D B53_DUPLEX_STAT_GE, .jumbo_pm_reg =3D B53_JUMBO_PORT_MASK, .jumbo_size_reg =3D B53_JUMBO_MAX_SIZE, + .arl_ops =3D &b53_arl_ops_95, }, { .chip_id =3D BCM5397_DEVICE_ID, @@ -2769,6 +2775,7 @@ static const struct b53_chip_data b53_switch_chips[] = =3D { .duplex_reg =3D B53_DUPLEX_STAT_GE, .jumbo_pm_reg =3D B53_JUMBO_PORT_MASK, .jumbo_size_reg =3D B53_JUMBO_MAX_SIZE, + .arl_ops =3D &b53_arl_ops_95, }, { .chip_id =3D BCM5398_DEVICE_ID, @@ -2782,6 +2789,7 @@ static const struct b53_chip_data b53_switch_chips[] = =3D { .duplex_reg =3D B53_DUPLEX_STAT_GE, .jumbo_pm_reg =3D B53_JUMBO_PORT_MASK, .jumbo_size_reg =3D B53_JUMBO_MAX_SIZE, + .arl_ops =3D &b53_arl_ops_95, }, { .chip_id =3D BCM53101_DEVICE_ID, @@ -2795,6 +2803,7 @@ static const struct b53_chip_data b53_switch_chips[] = =3D { .duplex_reg =3D B53_DUPLEX_STAT_GE, .jumbo_pm_reg =3D B53_JUMBO_PORT_MASK, .jumbo_size_reg =3D B53_JUMBO_MAX_SIZE, + .arl_ops =3D &b53_arl_ops_95, }, { .chip_id =3D BCM53115_DEVICE_ID, @@ -2808,6 +2817,7 @@ static const struct b53_chip_data b53_switch_chips[] = =3D { .duplex_reg =3D B53_DUPLEX_STAT_GE, .jumbo_pm_reg =3D B53_JUMBO_PORT_MASK, .jumbo_size_reg =3D B53_JUMBO_MAX_SIZE, + .arl_ops =3D &b53_arl_ops_95, }, { .chip_id =3D BCM53125_DEVICE_ID, @@ -2821,6 +2831,7 @@ static const struct b53_chip_data b53_switch_chips[] = =3D { .duplex_reg =3D B53_DUPLEX_STAT_GE, .jumbo_pm_reg =3D B53_JUMBO_PORT_MASK, .jumbo_size_reg =3D B53_JUMBO_MAX_SIZE, + .arl_ops =3D &b53_arl_ops_95, }, { .chip_id =3D BCM53128_DEVICE_ID, @@ -2834,6 +2845,7 @@ static const struct b53_chip_data b53_switch_chips[] = =3D { .duplex_reg =3D B53_DUPLEX_STAT_GE, .jumbo_pm_reg =3D B53_JUMBO_PORT_MASK, .jumbo_size_reg =3D B53_JUMBO_MAX_SIZE, + .arl_ops =3D &b53_arl_ops_95, }, { .chip_id =3D BCM63XX_DEVICE_ID, @@ -2847,6 +2859,7 @@ static const struct b53_chip_data b53_switch_chips[] = =3D { .duplex_reg =3D B53_DUPLEX_STAT_63XX, .jumbo_pm_reg =3D B53_JUMBO_PORT_MASK_63XX, .jumbo_size_reg =3D B53_JUMBO_MAX_SIZE_63XX, + .arl_ops =3D &b53_arl_ops_95, }, { .chip_id =3D BCM53010_DEVICE_ID, @@ -2860,6 +2873,7 @@ static const struct b53_chip_data b53_switch_chips[] = =3D { .duplex_reg =3D B53_DUPLEX_STAT_GE, .jumbo_pm_reg =3D B53_JUMBO_PORT_MASK, .jumbo_size_reg =3D B53_JUMBO_MAX_SIZE, + .arl_ops =3D &b53_arl_ops_95, }, { .chip_id =3D BCM53011_DEVICE_ID, @@ -2873,6 +2887,7 @@ static const struct b53_chip_data b53_switch_chips[] = =3D { .duplex_reg =3D B53_DUPLEX_STAT_GE, .jumbo_pm_reg =3D B53_JUMBO_PORT_MASK, .jumbo_size_reg =3D B53_JUMBO_MAX_SIZE, + .arl_ops =3D &b53_arl_ops_95, }, { .chip_id =3D BCM53012_DEVICE_ID, @@ -2886,6 +2901,7 @@ static const struct b53_chip_data b53_switch_chips[] = =3D { .duplex_reg =3D B53_DUPLEX_STAT_GE, .jumbo_pm_reg =3D B53_JUMBO_PORT_MASK, .jumbo_size_reg =3D B53_JUMBO_MAX_SIZE, + .arl_ops =3D &b53_arl_ops_95, }, { .chip_id =3D BCM53018_DEVICE_ID, @@ -2899,6 +2915,7 @@ static const struct b53_chip_data b53_switch_chips[] = =3D { .duplex_reg =3D B53_DUPLEX_STAT_GE, .jumbo_pm_reg =3D B53_JUMBO_PORT_MASK, .jumbo_size_reg =3D B53_JUMBO_MAX_SIZE, + .arl_ops =3D &b53_arl_ops_95, }, { .chip_id =3D BCM53019_DEVICE_ID, @@ -2912,6 +2929,7 @@ static const struct b53_chip_data b53_switch_chips[] = =3D { .duplex_reg =3D B53_DUPLEX_STAT_GE, .jumbo_pm_reg =3D B53_JUMBO_PORT_MASK, .jumbo_size_reg =3D B53_JUMBO_MAX_SIZE, + .arl_ops =3D &b53_arl_ops_95, }, { .chip_id =3D BCM58XX_DEVICE_ID, @@ -2925,6 +2943,7 @@ static const struct b53_chip_data b53_switch_chips[] = =3D { .duplex_reg =3D B53_DUPLEX_STAT_GE, .jumbo_pm_reg =3D B53_JUMBO_PORT_MASK, .jumbo_size_reg =3D B53_JUMBO_MAX_SIZE, + .arl_ops =3D &b53_arl_ops_95, }, { .chip_id =3D BCM583XX_DEVICE_ID, @@ -2938,6 +2957,7 @@ static const struct b53_chip_data b53_switch_chips[] = =3D { .duplex_reg =3D B53_DUPLEX_STAT_GE, .jumbo_pm_reg =3D B53_JUMBO_PORT_MASK, .jumbo_size_reg =3D B53_JUMBO_MAX_SIZE, + .arl_ops =3D &b53_arl_ops_95, }, /* Starfighter 2 */ { @@ -2952,6 +2972,7 @@ static const struct b53_chip_data b53_switch_chips[] = =3D { .duplex_reg =3D B53_DUPLEX_STAT_GE, .jumbo_pm_reg =3D B53_JUMBO_PORT_MASK, .jumbo_size_reg =3D B53_JUMBO_MAX_SIZE, + .arl_ops =3D &b53_arl_ops_95, }, { .chip_id =3D BCM7445_DEVICE_ID, @@ -2965,6 +2986,7 @@ static const struct b53_chip_data b53_switch_chips[] = =3D { .duplex_reg =3D B53_DUPLEX_STAT_GE, .jumbo_pm_reg =3D B53_JUMBO_PORT_MASK, .jumbo_size_reg =3D B53_JUMBO_MAX_SIZE, + .arl_ops =3D &b53_arl_ops_95, }, { .chip_id =3D BCM7278_DEVICE_ID, @@ -2978,6 +3000,7 @@ static const struct b53_chip_data b53_switch_chips[] = =3D { .duplex_reg =3D B53_DUPLEX_STAT_GE, .jumbo_pm_reg =3D B53_JUMBO_PORT_MASK, .jumbo_size_reg =3D B53_JUMBO_MAX_SIZE, + .arl_ops =3D &b53_arl_ops_95, }, { .chip_id =3D BCM53134_DEVICE_ID, @@ -2992,6 +3015,7 @@ static const struct b53_chip_data b53_switch_chips[] = =3D { .duplex_reg =3D B53_DUPLEX_STAT_GE, .jumbo_pm_reg =3D B53_JUMBO_PORT_MASK, .jumbo_size_reg =3D B53_JUMBO_MAX_SIZE, + .arl_ops =3D &b53_arl_ops_95, }, }; =20 @@ -3020,6 +3044,7 @@ static int b53_switch_init(struct b53_device *dev) dev->num_vlans =3D chip->vlans; dev->num_arl_bins =3D chip->arl_bins; dev->num_arl_buckets =3D chip->arl_buckets; + dev->arl_ops =3D chip->arl_ops; break; } } diff --git a/drivers/net/dsa/b53/b53_priv.h b/drivers/net/dsa/b53/b53_priv.h index 458775f95164..ef2413509b5d 100644 --- a/drivers/net/dsa/b53/b53_priv.h +++ b/drivers/net/dsa/b53/b53_priv.h @@ -58,6 +58,17 @@ struct b53_io_ops { bool link_up); }; =20 +struct b53_arl_entry; + +struct b53_arl_ops { + void (*arl_read_entry)(struct b53_device *dev, + struct b53_arl_entry *ent, u8 idx); + void (*arl_write_entry)(struct b53_device *dev, + const struct b53_arl_entry *ent, u8 idx); + void (*arl_search_read)(struct b53_device *dev, u8 idx, + struct b53_arl_entry *ent); +}; + #define B53_INVALID_LANE 0xff =20 enum { @@ -127,6 +138,7 @@ struct b53_device { struct mutex stats_mutex; struct mutex arl_mutex; const struct b53_io_ops *ops; + const struct b53_arl_ops *arl_ops; =20 /* chip specific data */ u32 chip_id; @@ -371,6 +383,24 @@ static inline void b53_arl_from_entry_25(u64 *mac_vid, *mac_vid |=3D ARLTBL_AGE_25; } =20 +static inline void b53_arl_read_entry(struct b53_device *dev, + struct b53_arl_entry *ent, u8 idx) +{ + dev->arl_ops->arl_read_entry(dev, ent, idx); +} + +static inline void b53_arl_write_entry(struct b53_device *dev, + const struct b53_arl_entry *ent, u8 idx) +{ + dev->arl_ops->arl_write_entry(dev, ent, idx); +} + +static inline void b53_arl_search_read(struct b53_device *dev, u8 idx, + struct b53_arl_entry *ent) +{ + dev->arl_ops->arl_search_read(dev, idx, ent); +} + #ifdef CONFIG_BCM47XX =20 #include --=20 2.43.0 From nobody Fri Dec 19 19:17:19 2025 Received: from mail-ed1-f46.google.com (mail-ed1-f46.google.com [209.85.208.46]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 12AA8312805 for ; Fri, 7 Nov 2025 08:08:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762502891; cv=none; b=bcpu96PvqH+P1wgDSlZw5jFjSeblZ39uCgwJvHocubP/3vdGY6sxgw50XaN02S8Z7NUAlUvYaTOqQBnJ/eshlbvn4jwVewI7due+LaMTdEFX/SKwW4VoeeQpEtyIr4UHsbJnDZHsiQ2YoRg5Gn9lCBrFz1Bm3ZpAQTC0Ybgd4aU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762502891; c=relaxed/simple; bh=n1o2qVzRCeAQ0PlnG+136G/ur00iG4oZfa976larNhc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=O6TERJwaxN5CuYZzxcSjq5TlWe2O2hVFgwwS9rBwl3k5bdDfdcxx317+47QQhcpOagLuIGxgfn2G+C6FVmC3j4rtC9yJXWVBKAju6MTvBTKFEHHb48unYmhya8XbxQTt5F3YfXuXhPIMuyuZjb7VySqmBByJAMPielW+ik3lOMU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=WuTX3r+G; arc=none smtp.client-ip=209.85.208.46 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="WuTX3r+G" Received: by mail-ed1-f46.google.com with SMTP id 4fb4d7f45d1cf-640c3940649so617203a12.1 for ; Fri, 07 Nov 2025 00:08:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1762502887; x=1763107687; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=dJKILKo+cVHMeov0d3h84V9BorLUd9uzSRayOoEA/yU=; b=WuTX3r+G1X1sw5OGL6vp/F501Caoy9TsxPfF4cj7yiGZUgrdp3Rj89Ghucnn8ExuKt U1jT39iqVgnYyPav+BUKx5Rcfax93k0sW86hsA3yLh8J4QUVRt5j+aTGa6zMho3KeBJj Jj6UZw1i/5FGoBrVjBsGzLHaQGEn3JjWa3ALr3NZZtfZdbR2RV/cGmKJjlMW9sXZPsbY tpuzF8qyw1qOYj86kq8YQvYavIoMM5tn+R/XE+1fszIzMbDoNO97rMVqm9xmKVUygIsm E9ULyiQd9WlGiT6ypx2t7hrZv7hRtmg7FiplBiM3292+PVdqwDI1NQeALaDpjOEynpH4 m8ew== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1762502887; x=1763107687; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=dJKILKo+cVHMeov0d3h84V9BorLUd9uzSRayOoEA/yU=; b=KU00eihyECxqszVOS6RGGmZgBOKx5k8xMeqXFk+9Twu0xPcv2+AC17b5NdTRonZFSo W9GISPP2OQU1Ei/+dki9w7NNwNkbNbyhZgYybt2F3npqYObfgoJmSG/LyXtxOvEJc9Rm 3/tZH6YVb+kYw4wAd5+sVNrEwmxDg1GCcyKnaMgv5BxQ7O7mcoohZ3A7o7vp/QxA+wSK IFBU/KsmV5hs13uLunG13D/HN+2EjY7iUuSHJoFqYeOOW6PTEMdCfVqZAD4duaaoSgB+ z1E8y/yobtnVXQtRvQgolR5pdrCL9QeySY5ijJgMTlh1nh7A9aZ6nrLnp/4C8DNneCG4 8U5A== X-Forwarded-Encrypted: i=1; AJvYcCXYm7VimSv1UvKxtPr6O5W3jjB1UPPlapjNyX3WPTucK+gdvC3bKIEoLGUh7v+Ya9sPy2L8kdbAZLnmMdA=@vger.kernel.org X-Gm-Message-State: AOJu0YwYgKp1uCL5EFbEmmA1GpzEYwOmYk5jMJOWDXkFlvnVX+M/B28L P0rBnRa+R6/+J/RfQAcxMUq7Pq6z+XEKVjCRRXHh9bZMX4GpxSseaRee X-Gm-Gg: ASbGnct7jKumcapKz78P6eLFQLVwyaeGsuAYa4jgVQVpNmq2GtxFw2SHg1tveXQSPuO GgR01Y8LroZksnaYw/2iZNeLopgR9oCsM9EkCcuzMs+WZmIPhRQx716gspX6tWPvxxcqBLVT4qL kU7JGi3M/vBrAnX81xciX+gc3maJHqO4yfR2jLUZXQQwnZC3smmSzvxLZOkb+gGC8jaUZZu9qOV SEFr1UXvOV//bTama/IPCFNokaQDgmGX2fIZjbGJKsdhcrE0aaC5Q0reZlms85aHfzLxW5i+nG5 /qgMJKKvywpdZsir5IKnFngCs8nPaRXTjRXsFwi6ZiWs0iKQrhZ8A9Pinc3+pGmVT+gy0yLnm3g 3DZ+tW8CQXu+D+AeXFkx5BbZsW+/LTPgHki12W8B42EmDg96B5RJ+FSl1KCpNJdBaO6M9WYniZR gsmdsBBJc7xA09XBR4vkGBIg2eDN76BcQW16qx5DnZl7c8oCGR08P885ID X-Google-Smtp-Source: AGHT+IEXAnb76NwN8et4HgAWUjovTDM882xzlij+ezQZc/ebJUVc4ljJCPE7t7aQ+6LIGBtYZ8MDsg== X-Received: by 2002:a05:6402:2712:b0:640:ae02:d7cc with SMTP id 4fb4d7f45d1cf-6413f080795mr2177261a12.3.1762502887293; Fri, 07 Nov 2025 00:08:07 -0800 (PST) Received: from localhost (dslb-002-205-018-238.002.205.pools.vodafone-ip.de. [2.205.18.238]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-6411f713970sm3633299a12.8.2025.11.07.00.08.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 07 Nov 2025 00:08:06 -0800 (PST) From: Jonas Gorski To: Florian Fainelli , Andrew Lunn , Vladimir Oltean , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH net-next 7/8] net: dsa: b53: add support for 5389/5397/5398 ARL entry format Date: Fri, 7 Nov 2025 09:07:48 +0100 Message-ID: <20251107080749.26936-8-jonas.gorski@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251107080749.26936-1-jonas.gorski@gmail.com> References: <20251107080749.26936-1-jonas.gorski@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" BCM5389, BCM5397 and BCM5398 use a different ARL entry format with just a 16 bit fwdentry register, as well as different search control and data offsets. So add appropriate ops for them and switch those chips to use them. Signed-off-by: Jonas Gorski Reviewed-by: Florian Fainelli --- drivers/net/dsa/b53/b53_common.c | 53 ++++++++++++++++++++++++++++++-- drivers/net/dsa/b53/b53_priv.h | 26 ++++++++++++++++ drivers/net/dsa/b53/b53_regs.h | 13 ++++++++ 3 files changed, 89 insertions(+), 3 deletions(-) diff --git a/drivers/net/dsa/b53/b53_common.c b/drivers/net/dsa/b53/b53_com= mon.c index c69022cc85bf..73ea9adb95b7 100644 --- a/drivers/net/dsa/b53/b53_common.c +++ b/drivers/net/dsa/b53/b53_common.c @@ -1870,6 +1870,31 @@ static void b53_arl_write_entry_25(struct b53_device= *dev, mac_vid); } =20 +static void b53_arl_read_entry_89(struct b53_device *dev, + struct b53_arl_entry *ent, u8 idx) +{ + u64 mac_vid; + u16 fwd_entry; + + b53_read64(dev, B53_ARLIO_PAGE, B53_ARLTBL_MAC_VID_ENTRY(idx), + &mac_vid); + b53_read16(dev, B53_ARLIO_PAGE, B53_ARLTBL_DATA_ENTRY(idx), &fwd_entry); + b53_arl_to_entry_89(ent, mac_vid, fwd_entry); +} + +static void b53_arl_write_entry_89(struct b53_device *dev, + const struct b53_arl_entry *ent, u8 idx) +{ + u32 fwd_entry; + u64 mac_vid; + + b53_arl_from_entry_89(&mac_vid, &fwd_entry, ent); + b53_write64(dev, B53_ARLIO_PAGE, + B53_ARLTBL_MAC_VID_ENTRY(idx), mac_vid); + b53_write16(dev, B53_ARLIO_PAGE, + B53_ARLTBL_DATA_ENTRY(idx), fwd_entry); +} + static void b53_arl_read_entry_95(struct b53_device *dev, struct b53_arl_entry *ent, u8 idx) { @@ -2033,6 +2058,8 @@ static void b53_read_arl_srch_ctl(struct b53_device *= dev, u8 *val) =20 if (is5325(dev) || is5365(dev)) offset =3D B53_ARL_SRCH_CTL_25; + else if (dev->chip_id =3D=3D BCM5389_DEVICE_ID || is5397_98(dev)) + offset =3D B53_ARL_SRCH_CTL_89; else offset =3D B53_ARL_SRCH_CTL; =20 @@ -2045,6 +2072,8 @@ static void b53_write_arl_srch_ctl(struct b53_device = *dev, u8 val) =20 if (is5325(dev) || is5365(dev)) offset =3D B53_ARL_SRCH_CTL_25; + else if (dev->chip_id =3D=3D BCM5389_DEVICE_ID || is5397_98(dev)) + offset =3D B53_ARL_SRCH_CTL_89; else offset =3D B53_ARL_SRCH_CTL; =20 @@ -2090,6 +2119,18 @@ static void b53_arl_search_read_65(struct b53_device= *dev, u8 idx, b53_arl_to_entry_25(ent, mac_vid); } =20 +static void b53_arl_search_read_89(struct b53_device *dev, u8 idx, + struct b53_arl_entry *ent) +{ + u16 fwd_entry; + u64 mac_vid; + + b53_read64(dev, B53_ARLIO_PAGE, B53_ARL_SRCH_RSLT_MACVID_89, + &mac_vid); + b53_read16(dev, B53_ARLIO_PAGE, B53_ARL_SRCH_RSLT_89, &fwd_entry); + b53_arl_to_entry_89(ent, mac_vid, fwd_entry); +} + static void b53_arl_search_read_95(struct b53_device *dev, u8 idx, struct b53_arl_entry *ent) { @@ -2683,6 +2724,12 @@ static const struct b53_arl_ops b53_arl_ops_65 =3D { .arl_search_read =3D b53_arl_search_read_65, }; =20 +static const struct b53_arl_ops b53_arl_ops_89 =3D { + .arl_read_entry =3D b53_arl_read_entry_89, + .arl_write_entry =3D b53_arl_write_entry_89, + .arl_search_read =3D b53_arl_search_read_89, +}; + static const struct b53_arl_ops b53_arl_ops_95 =3D { .arl_read_entry =3D b53_arl_read_entry_95, .arl_write_entry =3D b53_arl_write_entry_95, @@ -2747,7 +2794,7 @@ static const struct b53_chip_data b53_switch_chips[] = =3D { .duplex_reg =3D B53_DUPLEX_STAT_GE, .jumbo_pm_reg =3D B53_JUMBO_PORT_MASK, .jumbo_size_reg =3D B53_JUMBO_MAX_SIZE, - .arl_ops =3D &b53_arl_ops_95, + .arl_ops =3D &b53_arl_ops_89, }, { .chip_id =3D BCM5395_DEVICE_ID, @@ -2775,7 +2822,7 @@ static const struct b53_chip_data b53_switch_chips[] = =3D { .duplex_reg =3D B53_DUPLEX_STAT_GE, .jumbo_pm_reg =3D B53_JUMBO_PORT_MASK, .jumbo_size_reg =3D B53_JUMBO_MAX_SIZE, - .arl_ops =3D &b53_arl_ops_95, + .arl_ops =3D &b53_arl_ops_89, }, { .chip_id =3D BCM5398_DEVICE_ID, @@ -2789,7 +2836,7 @@ static const struct b53_chip_data b53_switch_chips[] = =3D { .duplex_reg =3D B53_DUPLEX_STAT_GE, .jumbo_pm_reg =3D B53_JUMBO_PORT_MASK, .jumbo_size_reg =3D B53_JUMBO_MAX_SIZE, - .arl_ops =3D &b53_arl_ops_95, + .arl_ops =3D &b53_arl_ops_89, }, { .chip_id =3D BCM53101_DEVICE_ID, diff --git a/drivers/net/dsa/b53/b53_priv.h b/drivers/net/dsa/b53/b53_priv.h index ef2413509b5d..d6d25bb3945b 100644 --- a/drivers/net/dsa/b53/b53_priv.h +++ b/drivers/net/dsa/b53/b53_priv.h @@ -353,6 +353,18 @@ static inline void b53_arl_to_entry_25(struct b53_arl_= entry *ent, ent->vid =3D mac_vid >> ARLTBL_VID_S_65; } =20 +static inline void b53_arl_to_entry_89(struct b53_arl_entry *ent, + u64 mac_vid, u16 fwd_entry) +{ + memset(ent, 0, sizeof(*ent)); + ent->port =3D fwd_entry & ARLTBL_DATA_PORT_ID_MASK_89; + ent->is_valid =3D !!(fwd_entry & ARLTBL_VALID_89); + ent->is_age =3D !!(fwd_entry & ARLTBL_AGE_89); + ent->is_static =3D !!(fwd_entry & ARLTBL_STATIC_89); + u64_to_ether_addr(mac_vid, ent->mac); + ent->vid =3D mac_vid >> ARLTBL_VID_S; +} + static inline void b53_arl_from_entry(u64 *mac_vid, u32 *fwd_entry, const struct b53_arl_entry *ent) { @@ -383,6 +395,20 @@ static inline void b53_arl_from_entry_25(u64 *mac_vid, *mac_vid |=3D ARLTBL_AGE_25; } =20 +static inline void b53_arl_from_entry_89(u64 *mac_vid, u32 *fwd_entry, + const struct b53_arl_entry *ent) +{ + *mac_vid =3D ether_addr_to_u64(ent->mac); + *mac_vid |=3D (u64)(ent->vid & ARLTBL_VID_MASK) << ARLTBL_VID_S; + *fwd_entry =3D ent->port & ARLTBL_DATA_PORT_ID_MASK_89; + if (ent->is_valid) + *fwd_entry |=3D ARLTBL_VALID_89; + if (ent->is_static) + *fwd_entry |=3D ARLTBL_STATIC_89; + if (ent->is_age) + *fwd_entry |=3D ARLTBL_AGE_89; +} + static inline void b53_arl_read_entry(struct b53_device *dev, struct b53_arl_entry *ent, u8 idx) { diff --git a/drivers/net/dsa/b53/b53_regs.h b/drivers/net/dsa/b53/b53_regs.h index c36a3dfb2ee8..c303507d3034 100644 --- a/drivers/net/dsa/b53/b53_regs.h +++ b/drivers/net/dsa/b53/b53_regs.h @@ -346,12 +346,20 @@ #define ARLTBL_STATIC BIT(15) #define ARLTBL_VALID BIT(16) =20 +/* BCM5389 ARL Table Data Entry N Register format (16 bit) */ +#define ARLTBL_DATA_PORT_ID_MASK_89 GENMASK(8, 0) +#define ARLTBL_TC_MASK_89 GENMASK(12, 10) +#define ARLTBL_AGE_89 BIT(13) +#define ARLTBL_STATIC_89 BIT(14) +#define ARLTBL_VALID_89 BIT(15) + /* Maximum number of bin entries in the ARL for all switches */ #define B53_ARLTBL_MAX_BIN_ENTRIES 4 =20 /* ARL Search Control Register (8 bit) */ #define B53_ARL_SRCH_CTL 0x50 #define B53_ARL_SRCH_CTL_25 0x20 +#define B53_ARL_SRCH_CTL_89 0x30 #define ARL_SRCH_VLID BIT(0) #define ARL_SRCH_STDN BIT(7) =20 @@ -359,10 +367,12 @@ #define B53_ARL_SRCH_ADDR 0x51 #define B53_ARL_SRCH_ADDR_25 0x22 #define B53_ARL_SRCH_ADDR_65 0x24 +#define B53_ARL_SRCH_ADDR_89 0x31 #define ARL_ADDR_MASK GENMASK(14, 0) =20 /* ARL Search MAC/VID Result (64 bit) */ #define B53_ARL_SRCH_RSTL_0_MACVID 0x60 +#define B53_ARL_SRCH_RSLT_MACVID_89 0x33 =20 /* Single register search result on 5325 */ #define B53_ARL_SRCH_RSTL_0_MACVID_25 0x24 @@ -372,6 +382,9 @@ /* ARL Search Data Result (32 bit) */ #define B53_ARL_SRCH_RSTL_0 0x68 =20 +/* BCM5389 ARL Search Data Result (16 bit) */ +#define B53_ARL_SRCH_RSLT_89 0x3b + #define B53_ARL_SRCH_RSTL_MACVID(x) (B53_ARL_SRCH_RSTL_0_MACVID + ((x) * 0= x10)) #define B53_ARL_SRCH_RSTL(x) (B53_ARL_SRCH_RSTL_0 + ((x) * 0x10)) =20 --=20 2.43.0 From nobody Fri Dec 19 19:17:19 2025 Received: from mail-ed1-f54.google.com (mail-ed1-f54.google.com [209.85.208.54]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5D0F83128AE for ; Fri, 7 Nov 2025 08:08:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762502893; cv=none; b=JPrvHegaxzM9z7y4oOs/KzBrZVNTWM0k8MJ3b8Gh0GVyFsdUhpJPidRlZ/G7816d2Ckg+6+ToBBsILUHPgFlB/8Yp/dP7B6d0EQAgSfsz5bbsBuGhx7ifhsNvJjAV/jgs8M0P1ndkry3G6mK7vl9LVrB8TmXXXphyp6bfNZOH8M= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762502893; c=relaxed/simple; bh=tMGAtjDdxCi9/9zWmB6IYJaxSxBHhxBmGXpAr5ob+3M=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=DMuBy9j4tIsgu1F3EbaRP/yPlB9rA0BG72U7cDq2e9pVdL/pPTDBwMN3iasOu6MJD6FyBkwOCNyp3fN3YXErm3oZTJ8IAB5G02nK/L9sfgUcBqEAJFGfG0iQG3YnmhQN872Q8+JbOqublieGdSVETBjEPFwaOJVe3g18ETKvup4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=IwREXhVg; arc=none smtp.client-ip=209.85.208.54 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="IwREXhVg" Received: by mail-ed1-f54.google.com with SMTP id 4fb4d7f45d1cf-640b0639dabso886067a12.3 for ; Fri, 07 Nov 2025 00:08:10 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1762502889; x=1763107689; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Iuf9P5KPx2jXNqYADTXinaVkfIdFLshS7KxiibOK2ZI=; b=IwREXhVgzD4e62dUNgrcTyCVsFd9yT2LK6WQ751XRwxa2wPwVzKrnXfibOX6e42dkX RHoGY9et4pKcKLwnbXjyL4jcQzE3aVdsBkd59rSQD6hyjlCv9M0wt61N/rLUKUfiZKeQ RjWEzoElWW38nHcrlxRfQxKomMVspRxb/jpH+UNxru3/FYq3vwMfGoBKYT0hYfdn8E3a 40fd95Z5/djWpgmZACR/FXncrWbJmGTpCvaJA8k41QlM0TEMTYRIbTEdk641tJIzVaTf VnRjrsr+eo8zf5ZILOGF1Y90EZ8CSSINrxURVdulm8m8RSnMb7pFhl9N9iqWYrP7Qrx1 QGNQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1762502889; x=1763107689; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=Iuf9P5KPx2jXNqYADTXinaVkfIdFLshS7KxiibOK2ZI=; b=RmBZMNe6TPxs6Sw82TPazfcMpv70oHKL6e2a5hntKRlpHXp96VY/0cgvQt8GZoLpuc wseuadVCcVpCARH111rEbtospfWgRP8B0pYLmC0D3mKv1wSil5aurSl2OlhvLvDixdER uKrrgy5+2sdDInFWjzPZuNv6TG8h552dzCi3uoVqWw4cnlkSj4TxnFFD2ypnPSiMlvdk mR+omOJM478XnfdWTiKWdCuWyxSNfXcelxB3QaENqQFjtdC5tEaLnGHu2DwwHFJAQwgL yohJXg2o8iUKBxlN3+Yew06t5ZF8Y3yvDJCMjsr7baNAaiPrg1PHa1Ue9uwhSQy7RBEq BwEA== X-Forwarded-Encrypted: i=1; AJvYcCXTXv1UW0zkl5p3qVqxzKCNfCvG/sdrX9/cqRyf0Np3DpC+TVXT0l3ASU7cLPshuXZdHIJqJXy4q/teoxM=@vger.kernel.org X-Gm-Message-State: AOJu0YxTVlYq/eu9o9FHdaVKJuUd0f32S0/WqPbKojewIn1L9vkwjvb/ Vw3tQGYlhgO9AvKaqACRH2D/XLUgJH20X6soEk0fnddfY/1mhhkZK2uF X-Gm-Gg: ASbGnctJHHjnatGI7Rye1mVpq17FzIOtkXgtGOlHxck442RgVkvnrW4PqkgHKtMzTPD NEP7EvESWDJjCzlN41GEc+ydAVo6ZrJnYNJtq28k38u/J1fu+gYgL0gWPdXUUJCIgERTBVMHhO5 25/MmpiL6xSprviPPOia4qffNmYqSmz+9q3A60j3YLNL0mJw3Rn0yDefProKB8rTA/w67Ng0xSJ znQt9dyCztTY0jxstWtQ00bMG8hKyewOggqDV6LGFHAAqatS4B8tgf/eG+4rd0/r5J8uGJXUaK5 LQg5q+/Ebee5QQtFlkDVmiJm9WGY8yFO72d7KFjIrDAAsNK6wu0ZXP9ZdRq5vl6zr1AD6mzB9Bn 396pmlwN69WtdnE/GUrMI6VQAgyTL+I1WUzIxHmmDQ4Q1TOobthaK3a+jX9POpsKD5MWie2hJsD YcX+gZlLnCxPR9ESSjRCcw7my/RfFbyZc/hWuNuVbCF2OYgL/LdYbQr5Ms X-Google-Smtp-Source: AGHT+IFnFGkrt1uMk6QFxmhpBVkXne7MSZyK27z1FgCbLMCewD/ubpgl1IolJWXSTq/K3tor3E2dtg== X-Received: by 2002:a17:907:6090:b0:b6d:7f28:4319 with SMTP id a640c23a62f3a-b72c08dc342mr219131966b.3.1762502888526; Fri, 07 Nov 2025 00:08:08 -0800 (PST) Received: from localhost (dslb-002-205-018-238.002.205.pools.vodafone-ip.de. [2.205.18.238]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b72bf312240sm179779666b.18.2025.11.07.00.08.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 07 Nov 2025 00:08:08 -0800 (PST) From: Jonas Gorski To: Florian Fainelli , Andrew Lunn , Vladimir Oltean , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH net-next 8/8] net: dsa: b53: add support for bcm63xx ARL entry format Date: Fri, 7 Nov 2025 09:07:49 +0100 Message-ID: <20251107080749.26936-9-jonas.gorski@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251107080749.26936-1-jonas.gorski@gmail.com> References: <20251107080749.26936-1-jonas.gorski@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The ARL registers of BCM63XX embedded switches are somewhat unique. The normal ARL table access registers have the same format as BCM5389, but the ARL search registers differ: * SRCH_CTL is at the same offset of BCM5389, but 16 bits wide. It does not have more fields, just needs to be accessed by a 16 bit read. * SRCH_RSLT_MACVID and SRCH_RSLT are aligned to 32 bit, and have shifted offsets. * SRCH_RSLT has a different format than the normal ARL data entry register. * There is only one set of ENTRY_N registers, implying a 1 bin layout. So add appropriate ops for bcm63xx and let it use it. Signed-off-by: Jonas Gorski Reviewed-by: Florian Fainelli --- drivers/net/dsa/b53/b53_common.c | 44 +++++++++++++++++++++++++++----- drivers/net/dsa/b53/b53_priv.h | 15 +++++++++++ drivers/net/dsa/b53/b53_regs.h | 9 +++++++ 3 files changed, 61 insertions(+), 7 deletions(-) diff --git a/drivers/net/dsa/b53/b53_common.c b/drivers/net/dsa/b53/b53_com= mon.c index 73ea9adb95b7..72c85cd34a4e 100644 --- a/drivers/net/dsa/b53/b53_common.c +++ b/drivers/net/dsa/b53/b53_common.c @@ -2058,12 +2058,20 @@ static void b53_read_arl_srch_ctl(struct b53_device= *dev, u8 *val) =20 if (is5325(dev) || is5365(dev)) offset =3D B53_ARL_SRCH_CTL_25; - else if (dev->chip_id =3D=3D BCM5389_DEVICE_ID || is5397_98(dev)) + else if (dev->chip_id =3D=3D BCM5389_DEVICE_ID || is5397_98(dev) || + is63xx(dev)) offset =3D B53_ARL_SRCH_CTL_89; else offset =3D B53_ARL_SRCH_CTL; =20 - b53_read8(dev, B53_ARLIO_PAGE, offset, val); + if (is63xx(dev)) { + u16 val16; + + b53_read16(dev, B53_ARLIO_PAGE, offset, &val16); + *val =3D val16 & 0xff; + } else { + b53_read8(dev, B53_ARLIO_PAGE, offset, val); + } } =20 static void b53_write_arl_srch_ctl(struct b53_device *dev, u8 val) @@ -2072,12 +2080,16 @@ static void b53_write_arl_srch_ctl(struct b53_devic= e *dev, u8 val) =20 if (is5325(dev) || is5365(dev)) offset =3D B53_ARL_SRCH_CTL_25; - else if (dev->chip_id =3D=3D BCM5389_DEVICE_ID || is5397_98(dev)) + else if (dev->chip_id =3D=3D BCM5389_DEVICE_ID || is5397_98(dev) || + is63xx(dev)) offset =3D B53_ARL_SRCH_CTL_89; else offset =3D B53_ARL_SRCH_CTL; =20 - b53_write8(dev, B53_ARLIO_PAGE, offset, val); + if (is63xx(dev)) + b53_write16(dev, B53_ARLIO_PAGE, offset, val); + else + b53_write8(dev, B53_ARLIO_PAGE, offset, val); } =20 static int b53_arl_search_wait(struct b53_device *dev) @@ -2131,6 +2143,18 @@ static void b53_arl_search_read_89(struct b53_device= *dev, u8 idx, b53_arl_to_entry_89(ent, mac_vid, fwd_entry); } =20 +static void b53_arl_search_read_63xx(struct b53_device *dev, u8 idx, + struct b53_arl_entry *ent) +{ + u16 fwd_entry; + u64 mac_vid; + + b53_read64(dev, B53_ARLIO_PAGE, B53_ARL_SRCH_RSLT_MACVID_63XX, + &mac_vid); + b53_read16(dev, B53_ARLIO_PAGE, B53_ARL_SRCH_RSLT_63XX, &fwd_entry); + b53_arl_search_to_entry_63xx(ent, mac_vid, fwd_entry); +} + static void b53_arl_search_read_95(struct b53_device *dev, u8 idx, struct b53_arl_entry *ent) { @@ -2730,6 +2754,12 @@ static const struct b53_arl_ops b53_arl_ops_89 =3D { .arl_search_read =3D b53_arl_search_read_89, }; =20 +static const struct b53_arl_ops b53_arl_ops_63xx =3D { + .arl_read_entry =3D b53_arl_read_entry_89, + .arl_write_entry =3D b53_arl_write_entry_89, + .arl_search_read =3D b53_arl_search_read_63xx, +}; + static const struct b53_arl_ops b53_arl_ops_95 =3D { .arl_read_entry =3D b53_arl_read_entry_95, .arl_write_entry =3D b53_arl_write_entry_95, @@ -2899,14 +2929,14 @@ static const struct b53_chip_data b53_switch_chips[= ] =3D { .dev_name =3D "BCM63xx", .vlans =3D 4096, .enabled_ports =3D 0, /* pdata must provide them */ - .arl_bins =3D 4, - .arl_buckets =3D 1024, + .arl_bins =3D 1, + .arl_buckets =3D 4096, .imp_port =3D 8, .vta_regs =3D B53_VTA_REGS_63XX, .duplex_reg =3D B53_DUPLEX_STAT_63XX, .jumbo_pm_reg =3D B53_JUMBO_PORT_MASK_63XX, .jumbo_size_reg =3D B53_JUMBO_MAX_SIZE_63XX, - .arl_ops =3D &b53_arl_ops_95, + .arl_ops =3D &b53_arl_ops_63xx, }, { .chip_id =3D BCM53010_DEVICE_ID, diff --git a/drivers/net/dsa/b53/b53_priv.h b/drivers/net/dsa/b53/b53_priv.h index d6d25bb3945b..2bfd0e7c95c9 100644 --- a/drivers/net/dsa/b53/b53_priv.h +++ b/drivers/net/dsa/b53/b53_priv.h @@ -409,6 +409,21 @@ static inline void b53_arl_from_entry_89(u64 *mac_vid,= u32 *fwd_entry, *fwd_entry |=3D ARLTBL_AGE_89; } =20 +static inline void b53_arl_search_to_entry_63xx(struct b53_arl_entry *ent, + u64 mac_vid, u16 fwd_entry) +{ + memset(ent, 0, sizeof(*ent)); + u64_to_ether_addr(mac_vid, ent->mac); + ent->vid =3D mac_vid >> ARLTBL_VID_S; + + ent->port =3D fwd_entry & ARL_SRST_PORT_ID_MASK_63XX; + ent->port >>=3D 1; + + ent->is_age =3D !!(fwd_entry & ARL_SRST_AGE_63XX); + ent->is_static =3D !!(fwd_entry & ARL_SRST_STATIC_63XX); + ent->is_valid =3D 1; +} + static inline void b53_arl_read_entry(struct b53_device *dev, struct b53_arl_entry *ent, u8 idx) { diff --git a/drivers/net/dsa/b53/b53_regs.h b/drivers/net/dsa/b53/b53_regs.h index c303507d3034..69ebbec932f6 100644 --- a/drivers/net/dsa/b53/b53_regs.h +++ b/drivers/net/dsa/b53/b53_regs.h @@ -368,11 +368,13 @@ #define B53_ARL_SRCH_ADDR_25 0x22 #define B53_ARL_SRCH_ADDR_65 0x24 #define B53_ARL_SRCH_ADDR_89 0x31 +#define B53_ARL_SRCH_ADDR_63XX 0x32 #define ARL_ADDR_MASK GENMASK(14, 0) =20 /* ARL Search MAC/VID Result (64 bit) */ #define B53_ARL_SRCH_RSTL_0_MACVID 0x60 #define B53_ARL_SRCH_RSLT_MACVID_89 0x33 +#define B53_ARL_SRCH_RSLT_MACVID_63XX 0x34 =20 /* Single register search result on 5325 */ #define B53_ARL_SRCH_RSTL_0_MACVID_25 0x24 @@ -388,6 +390,13 @@ #define B53_ARL_SRCH_RSTL_MACVID(x) (B53_ARL_SRCH_RSTL_0_MACVID + ((x) * 0= x10)) #define B53_ARL_SRCH_RSTL(x) (B53_ARL_SRCH_RSTL_0 + ((x) * 0x10)) =20 +/* 63XX ARL Search Data Result (16 bit) */ +#define B53_ARL_SRCH_RSLT_63XX 0x3c +#define ARL_SRST_PORT_ID_MASK_63XX GENMASK(9, 1) +#define ARL_SRST_TC_MASK_63XX GENMASK(13, 11) +#define ARL_SRST_AGE_63XX BIT(14) +#define ARL_SRST_STATIC_63XX BIT(15) + /************************************************************************* * IEEE 802.1X Registers *************************************************************************/ --=20 2.43.0