From nobody Mon Feb 9 23:04:26 2026 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