Thread (58 messages) 58 messages, 4 authors, 2022-02-03

Re: [RFC PATCH v7 16/16] net: dsa: qca8k: introduce qca8k_bulk_read/write function

From: Ansuel Smith <ansuelsmth@gmail.com>
Date: 2022-01-26 03:53:14
Also in: lkml

On Tue, Jan 25, 2022 at 07:45:29PM -0800, Florian Fainelli wrote:

On 1/22/2022 5:33 PM, Ansuel Smith wrote:
quoted
Introduce qca8k_bulk_read/write() function to use mgmt Ethernet way to
read/write packet in bulk. Make use of this new function in the fdb
function.

Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com>
---
[snip]
quoted
  static int
  qca8k_regmap_read(void *ctx, uint32_t reg, uint32_t *val)
  {
@@ -535,17 +572,13 @@ qca8k_busy_wait(struct qca8k_priv *priv, u32 reg, u32 mask)
  static int
  qca8k_fdb_read(struct qca8k_priv *priv, struct qca8k_fdb *fdb)
  {
-	u32 reg[4], val;
-	int i, ret;
+	u32 reg[4];
+	int ret;
  	/* load the ARL table into an array */
-	for (i = 0; i < 4; i++) {
-		ret = qca8k_read(priv, QCA8K_REG_ATU_DATA0 + (i * 4), &val);
-		if (ret < 0)
-			return ret;
-
-		reg[i] = val;
-	}
+	ret = qca8k_bulk_read(priv, QCA8K_REG_ATU_DATA0, reg, 12);
sizeof(reg)? How did you come up with 12 if we were executing the loop 4
times before or were we reading too much?
Exactly that. The acl table is actualy of 83 bits. Currently we read 128
bits but we only handle 96 as we never read/write in reg[3].
quoted
+	if (ret)
+		return ret;
  	/* vid - 83:72 */
  	fdb->vid = FIELD_GET(QCA8K_ATU_VID_MASK, reg[2]);
@@ -569,7 +602,6 @@ qca8k_fdb_write(struct qca8k_priv *priv, u16 vid, u8 port_mask, const u8 *mac,
  		u8 aging)
  {
  	u32 reg[3] = { 0 };
-	int i;
  	/* vid - 83:72 */
  	reg[2] = FIELD_PREP(QCA8K_ATU_VID_MASK, vid);
@@ -586,8 +618,7 @@ qca8k_fdb_write(struct qca8k_priv *priv, u16 vid, u8 port_mask, const u8 *mac,
  	reg[0] |= FIELD_PREP(QCA8K_ATU_ADDR5_MASK, mac[5]);
  	/* load the array into the ARL table */
-	for (i = 0; i < 3; i++)
-		qca8k_write(priv, QCA8K_REG_ATU_DATA0 + (i * 4), reg[i]);
+	qca8k_bulk_write(priv, QCA8K_REG_ATU_DATA0, reg, 12);
sizeof(reg) would be more adequate here.
-- 
Florian
-- 
	Ansuel
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help