Thread (7 messages) flat view 7 messages, 2 authors, 2026-03-19

Re: [PATCH net-next v5 2/2] net: dsa: mxl862xx: implement bridge offloading

From: Daniel Golle <daniel@makrotopia.org>
Date: 2026-03-19 12:15:48
Also in: lkml

On Thu, Mar 19, 2026 at 09:57:42AM +0100, Paolo Abeni wrote:
On 3/15/26 5:20 PM, Daniel Golle wrote:
quoted
(struct dsa_switch *ds, int port,
+				     struct dsa_bridge bridge,
+				     bool *tx_fwd_offload,
+				     struct netlink_ext_ack *extack)
+{
+	struct mxl862xx_priv *priv = ds->priv;
+	struct mxl862xx_bridge *mxlbridge;
+
+	mxlbridge = mxl862xx_find_bridge(ds, bridge);
+	if (!mxlbridge) {
+		mxlbridge = mxl862xx_allocate_bridge(ds, bridge.num);
+		if (IS_ERR(mxlbridge))
+			return PTR_ERR(mxlbridge);
+	}
+
+	__set_bit(port, mxlbridge->portmap);
AFAICS mxl862xx_bridge role is to track the above portmap, which in turn
looks like a quite generic information which could be easily tracked by
the DSA core. I'm wondering if it would be useful to move implement
tracking there, and remove the mxl862xx_bridge entirely.
DSA generally uses unsigned int as port ID, however, 500MB of a bitmap
seems excessive to cover the full 32-bit range. 256-bit would be
more than sufficient (u8 range), or the 128-bit (positive s8 range)
the firmware of MxL862xx also uses...

So what should be the size of the to-be-defined generic DSA portmap?

Or should tracking happen internally using other (dynamic) structures
(eg. link list) and we provide a helper taking a driver-allocated
bitmap and its size as parameters?

The to-be-invented tracking structure should also come with a priv
pointer which can be used by the driver to (in this case) track the
firmware-assigned bridge ID as well.

Alternatively, instead of inventing a new structure, the driver could
iterate over dsa_ports which carries a pointer to dsa_bridge, and we
could just extend dsa_bridge to contain a priv pointer which allows
drivers to track what ever they want together with the DSA bridge.

Let me know what you think.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help