<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/drivers/net/dsa/b53/b53_common.c, branch linux-5.17.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-5.17.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-5.17.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2021-12-08T22:31:16Z</updated>
<entry>
<title>net: dsa: add a "tx_fwd_offload" argument to -&gt;port_bridge_join</title>
<updated>2021-12-08T22:31:16Z</updated>
<author>
<name>Vladimir Oltean</name>
</author>
<published>2021-12-06T16:57:57Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=b079922ba2acf072b23d82fa246a0d8de198f0a2'/>
<id>urn:sha1:b079922ba2acf072b23d82fa246a0d8de198f0a2</id>
<content type='text'>
This is a preparation patch for the removal of the DSA switch methods
-&gt;port_bridge_tx_fwd_offload() and -&gt;port_bridge_tx_fwd_unoffload().
The plan is for the switch to report whether it offloads TX forwarding
directly as a response to the -&gt;port_bridge_join() method.

This change deals with the noisy portion of converting all existing
function prototypes to take this new boolean pointer argument.
The bool is placed in the cross-chip notifier structure for bridge join,
and a reference to it is provided to drivers. In the next change, DSA
will then actually look at this value instead of calling
-&gt;port_bridge_tx_fwd_offload().

Signed-off-by: Vladimir Oltean &lt;vladimir.oltean@nxp.com&gt;
Reviewed-by: Alvin Šipraga &lt;alsi@bang-olufsen.dk&gt;
Signed-off-by: Jakub Kicinski &lt;kuba@kernel.org&gt;
</content>
</entry>
<entry>
<title>net: dsa: keep the bridge_dev and bridge_num as part of the same structure</title>
<updated>2021-12-08T22:31:16Z</updated>
<author>
<name>Vladimir Oltean</name>
</author>
<published>2021-12-06T16:57:56Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=d3eed0e57d5d1bcbf1bd60f83a4adfe7d7b8dd9c'/>
<id>urn:sha1:d3eed0e57d5d1bcbf1bd60f83a4adfe7d7b8dd9c</id>
<content type='text'>
The main desire behind this is to provide coherent bridge information to
the fast path without locking.

For example, right now we set dp-&gt;bridge_dev and dp-&gt;bridge_num from
separate code paths, it is theoretically possible for a packet
transmission to read these two port properties consecutively and find a
bridge number which does not correspond with the bridge device.

Another desire is to start passing more complex bridge information to
dsa_switch_ops functions. For example, with FDB isolation, it is
expected that drivers will need to be passed the bridge which requested
an FDB/MDB entry to be offloaded, and along with that bridge_dev, the
associated bridge_num should be passed too, in case the driver might
want to implement an isolation scheme based on that number.

We already pass the {bridge_dev, bridge_num} pair to the TX forwarding
offload switch API, however we'd like to remove that and squash it into
the basic bridge join/leave API. So that means we need to pass this
pair to the bridge join/leave API.

During dsa_port_bridge_leave, first we unset dp-&gt;bridge_dev, then we
call the driver's .port_bridge_leave with what used to be our
dp-&gt;bridge_dev, but provided as an argument.

When bridge_dev and bridge_num get folded into a single structure, we
need to preserve this behavior in dsa_port_bridge_leave: we need a copy
of what used to be in dp-&gt;bridge.

Switch drivers check bridge membership by comparing dp-&gt;bridge_dev with
the provided bridge_dev, but now, if we provide the struct dsa_bridge as
a pointer, they cannot keep comparing dp-&gt;bridge to the provided
pointer, since this only points to an on-stack copy. To make this
obvious and prevent driver writers from forgetting and doing stupid
things, in this new API, the struct dsa_bridge is provided as a full
structure (not very large, contains an int and a pointer) instead of a
pointer. An explicit comparison function needs to be used to determine
bridge membership: dsa_port_offloads_bridge().

Signed-off-by: Vladimir Oltean &lt;vladimir.oltean@nxp.com&gt;
Reviewed-by: Alvin Šipraga &lt;alsi@bang-olufsen.dk&gt;
Signed-off-by: Jakub Kicinski &lt;kuba@kernel.org&gt;
</content>
</entry>
<entry>
<title>net: dsa: hide dp-&gt;bridge_dev and dp-&gt;bridge_num in drivers behind helpers</title>
<updated>2021-12-08T22:31:15Z</updated>
<author>
<name>Vladimir Oltean</name>
</author>
<published>2021-12-06T16:57:53Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=41fb0cf1bced59c1fe178cf6cc9f716b5da9e40e'/>
<id>urn:sha1:41fb0cf1bced59c1fe178cf6cc9f716b5da9e40e</id>
<content type='text'>
The location of the bridge device pointer and number is going to change.
It is not going to be kept individually per port, but in a common
structure allocated dynamically and which will have lockdep validation.

Use the helpers to access these elements so that we have a migration
path to the new organization.

Signed-off-by: Vladimir Oltean &lt;vladimir.oltean@nxp.com&gt;
Signed-off-by: Jakub Kicinski &lt;kuba@kernel.org&gt;
</content>
</entry>
<entry>
<title>net: dsa: b53: serialize access to the ARL table</title>
<updated>2021-10-25T11:59:41Z</updated>
<author>
<name>Vladimir Oltean</name>
</author>
<published>2021-10-24T17:17:52Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=f7eb4a1c0864821fe99edf12aca09739f9cbd7a4'/>
<id>urn:sha1:f7eb4a1c0864821fe99edf12aca09739f9cbd7a4</id>
<content type='text'>
The b53 driver performs non-atomic transactions to the ARL table when
adding, deleting and reading FDB and MDB entries.

Traditionally these were all serialized by the rtnl_lock(), but now it
is possible that DSA calls -&gt;port_fdb_add and -&gt;port_fdb_del without
holding that lock.

So the driver must have its own serialization logic. Add a mutex and
hold it from all entry points (-&gt;port_fdb_{add,del,dump},
-&gt;port_mdb_{add,del}).

Signed-off-by: Vladimir Oltean &lt;vladimir.oltean@nxp.com&gt;
Reviewed-by: Florian Fainelli &lt;f.fainelli@gmail.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>Revert "Merge branch 'dsa-rtnl'"</title>
<updated>2021-10-25T11:59:25Z</updated>
<author>
<name>David S. Miller</name>
</author>
<published>2021-10-25T11:59:25Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=2d7e73f09fc2f5d968ca375f047718cf25ae2b92'/>
<id>urn:sha1:2d7e73f09fc2f5d968ca375f047718cf25ae2b92</id>
<content type='text'>
This reverts commit 965e6b262f48257dbdb51b565ecfd84877a0ab5f, reversing
changes made to 4d98bb0d7ec2d0b417df6207b0bafe1868bad9f8.
</content>
</entry>
<entry>
<title>net: convert users of bitmap_foo() to linkmode_foo()</title>
<updated>2021-10-24T12:58:52Z</updated>
<author>
<name>Sean Anderson</name>
</author>
<published>2021-10-22T22:41:04Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=4973056cceacc70966396039fae99867dfafd796'/>
<id>urn:sha1:4973056cceacc70966396039fae99867dfafd796</id>
<content type='text'>
This converts instances of
	bitmap_foo(args..., __ETHTOOL_LINK_MODE_MASK_NBITS)
to
	linkmode_foo(args...)

I manually fixed up some lines to prevent them from being excessively
long. Otherwise, this change was generated with the following semantic
patch:

// Generated with
// echo linux/linkmode.h &gt; includes
// git grep -Flf includes include/ | cut -f 2- -d / | cat includes - \
// | sort | uniq | tee new_includes | wc -l &amp;&amp; mv new_includes includes
// and repeating until the number stopped going up
@i@
@@

(
 #include &lt;linux/acpi_mdio.h&gt;
|
 #include &lt;linux/brcmphy.h&gt;
|
 #include &lt;linux/dsa/loop.h&gt;
|
 #include &lt;linux/dsa/sja1105.h&gt;
|
 #include &lt;linux/ethtool.h&gt;
|
 #include &lt;linux/ethtool_netlink.h&gt;
|
 #include &lt;linux/fec.h&gt;
|
 #include &lt;linux/fs_enet_pd.h&gt;
|
 #include &lt;linux/fsl/enetc_mdio.h&gt;
|
 #include &lt;linux/fwnode_mdio.h&gt;
|
 #include &lt;linux/linkmode.h&gt;
|
 #include &lt;linux/lsm_audit.h&gt;
|
 #include &lt;linux/mdio-bitbang.h&gt;
|
 #include &lt;linux/mdio.h&gt;
|
 #include &lt;linux/mdio-mux.h&gt;
|
 #include &lt;linux/mii.h&gt;
|
 #include &lt;linux/mii_timestamper.h&gt;
|
 #include &lt;linux/mlx5/accel.h&gt;
|
 #include &lt;linux/mlx5/cq.h&gt;
|
 #include &lt;linux/mlx5/device.h&gt;
|
 #include &lt;linux/mlx5/driver.h&gt;
|
 #include &lt;linux/mlx5/eswitch.h&gt;
|
 #include &lt;linux/mlx5/fs.h&gt;
|
 #include &lt;linux/mlx5/port.h&gt;
|
 #include &lt;linux/mlx5/qp.h&gt;
|
 #include &lt;linux/mlx5/rsc_dump.h&gt;
|
 #include &lt;linux/mlx5/transobj.h&gt;
|
 #include &lt;linux/mlx5/vport.h&gt;
|
 #include &lt;linux/of_mdio.h&gt;
|
 #include &lt;linux/of_net.h&gt;
|
 #include &lt;linux/pcs-lynx.h&gt;
|
 #include &lt;linux/pcs/pcs-xpcs.h&gt;
|
 #include &lt;linux/phy.h&gt;
|
 #include &lt;linux/phy_led_triggers.h&gt;
|
 #include &lt;linux/phylink.h&gt;
|
 #include &lt;linux/platform_data/bcmgenet.h&gt;
|
 #include &lt;linux/platform_data/xilinx-ll-temac.h&gt;
|
 #include &lt;linux/pxa168_eth.h&gt;
|
 #include &lt;linux/qed/qed_eth_if.h&gt;
|
 #include &lt;linux/qed/qed_fcoe_if.h&gt;
|
 #include &lt;linux/qed/qed_if.h&gt;
|
 #include &lt;linux/qed/qed_iov_if.h&gt;
|
 #include &lt;linux/qed/qed_iscsi_if.h&gt;
|
 #include &lt;linux/qed/qed_ll2_if.h&gt;
|
 #include &lt;linux/qed/qed_nvmetcp_if.h&gt;
|
 #include &lt;linux/qed/qed_rdma_if.h&gt;
|
 #include &lt;linux/sfp.h&gt;
|
 #include &lt;linux/sh_eth.h&gt;
|
 #include &lt;linux/smsc911x.h&gt;
|
 #include &lt;linux/soc/nxp/lpc32xx-misc.h&gt;
|
 #include &lt;linux/stmmac.h&gt;
|
 #include &lt;linux/sunrpc/svc_rdma.h&gt;
|
 #include &lt;linux/sxgbe_platform.h&gt;
|
 #include &lt;net/cfg80211.h&gt;
|
 #include &lt;net/dsa.h&gt;
|
 #include &lt;net/mac80211.h&gt;
|
 #include &lt;net/selftests.h&gt;
|
 #include &lt;rdma/ib_addr.h&gt;
|
 #include &lt;rdma/ib_cache.h&gt;
|
 #include &lt;rdma/ib_cm.h&gt;
|
 #include &lt;rdma/ib_hdrs.h&gt;
|
 #include &lt;rdma/ib_mad.h&gt;
|
 #include &lt;rdma/ib_marshall.h&gt;
|
 #include &lt;rdma/ib_pack.h&gt;
|
 #include &lt;rdma/ib_pma.h&gt;
|
 #include &lt;rdma/ib_sa.h&gt;
|
 #include &lt;rdma/ib_smi.h&gt;
|
 #include &lt;rdma/ib_umem.h&gt;
|
 #include &lt;rdma/ib_umem_odp.h&gt;
|
 #include &lt;rdma/ib_verbs.h&gt;
|
 #include &lt;rdma/iw_cm.h&gt;
|
 #include &lt;rdma/mr_pool.h&gt;
|
 #include &lt;rdma/opa_addr.h&gt;
|
 #include &lt;rdma/opa_port_info.h&gt;
|
 #include &lt;rdma/opa_smi.h&gt;
|
 #include &lt;rdma/opa_vnic.h&gt;
|
 #include &lt;rdma/rdma_cm.h&gt;
|
 #include &lt;rdma/rdma_cm_ib.h&gt;
|
 #include &lt;rdma/rdmavt_cq.h&gt;
|
 #include &lt;rdma/rdma_vt.h&gt;
|
 #include &lt;rdma/rdmavt_qp.h&gt;
|
 #include &lt;rdma/rw.h&gt;
|
 #include &lt;rdma/tid_rdma_defs.h&gt;
|
 #include &lt;rdma/uverbs_ioctl.h&gt;
|
 #include &lt;rdma/uverbs_named_ioctl.h&gt;
|
 #include &lt;rdma/uverbs_std_types.h&gt;
|
 #include &lt;rdma/uverbs_types.h&gt;
|
 #include &lt;soc/mscc/ocelot.h&gt;
|
 #include &lt;soc/mscc/ocelot_ptp.h&gt;
|
 #include &lt;soc/mscc/ocelot_vcap.h&gt;
|
 #include &lt;trace/events/ib_mad.h&gt;
|
 #include &lt;trace/events/rdma_core.h&gt;
|
 #include &lt;trace/events/rdma.h&gt;
|
 #include &lt;trace/events/rpcrdma.h&gt;
|
 #include &lt;uapi/linux/ethtool.h&gt;
|
 #include &lt;uapi/linux/ethtool_netlink.h&gt;
|
 #include &lt;uapi/linux/mdio.h&gt;
|
 #include &lt;uapi/linux/mii.h&gt;
)

@depends on i@
expression list args;
@@

(
- bitmap_zero(args, __ETHTOOL_LINK_MODE_MASK_NBITS)
+ linkmode_zero(args)
|
- bitmap_copy(args, __ETHTOOL_LINK_MODE_MASK_NBITS)
+ linkmode_copy(args)
|
- bitmap_and(args, __ETHTOOL_LINK_MODE_MASK_NBITS)
+ linkmode_and(args)
|
- bitmap_or(args, __ETHTOOL_LINK_MODE_MASK_NBITS)
+ linkmode_or(args)
|
- bitmap_empty(args, ETHTOOL_LINK_MODE_MASK_NBITS)
+ linkmode_empty(args)
|
- bitmap_andnot(args, __ETHTOOL_LINK_MODE_MASK_NBITS)
+ linkmode_andnot(args)
|
- bitmap_equal(args, __ETHTOOL_LINK_MODE_MASK_NBITS)
+ linkmode_equal(args)
|
- bitmap_intersects(args, __ETHTOOL_LINK_MODE_MASK_NBITS)
+ linkmode_intersects(args)
|
- bitmap_subset(args, __ETHTOOL_LINK_MODE_MASK_NBITS)
+ linkmode_subset(args)
)

Add missing linux/mii.h include to mellanox. -DaveM

Signed-off-by: Sean Anderson &lt;sean.anderson@seco.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>net: dsa: b53: serialize access to the ARL table</title>
<updated>2021-10-24T12:47:44Z</updated>
<author>
<name>Vladimir Oltean</name>
</author>
<published>2021-10-22T18:43:07Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=f239934cffe5e6ebd4ad55fb643a526eb4774a31'/>
<id>urn:sha1:f239934cffe5e6ebd4ad55fb643a526eb4774a31</id>
<content type='text'>
The b53 driver performs non-atomic transactions to the ARL table when
adding, deleting and reading FDB and MDB entries.

Traditionally these were all serialized by the rtnl_lock(), but now it
is possible that DSA calls -&gt;port_fdb_add and -&gt;port_fdb_del without
holding that lock.

So the driver must have its own serialization logic. Add a mutex and
hold it from all entry points (-&gt;port_fdb_{add,del,dump},
-&gt;port_mdb_{add,del}).

Signed-off-by: Vladimir Oltean &lt;vladimir.oltean@nxp.com&gt;
Reviewed-by: Florian Fainelli &lt;f.fainelli@gmail.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>net: dsa: b53: Drop unused "cpu_port" field</title>
<updated>2021-09-17T02:06:36Z</updated>
<author>
<name>Rafał Miłecki</name>
</author>
<published>2021-09-16T12:03:54Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=7d5af56418d7d01e43247a33b6fe6492ea871923'/>
<id>urn:sha1:7d5af56418d7d01e43247a33b6fe6492ea871923</id>
<content type='text'>
It's set but never used anymore.

Signed-off-by: Rafał Miłecki &lt;rafal@milecki.pl&gt;
Reviewed-by: Florian Fainelli &lt;f.fainelli@gmail.com&gt;
Tested-by: Florian Fainelli &lt;f.fainelli@gmail.com&gt;
Signed-off-by: Jakub Kicinski &lt;kuba@kernel.org&gt;
</content>
</entry>
<entry>
<title>net: dsa: b53: Improve flow control setup on BCM5301x</title>
<updated>2021-09-17T02:06:36Z</updated>
<author>
<name>Rafał Miłecki</name>
</author>
<published>2021-09-16T12:03:53Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=3ff26b29230c54fea2353b63124c589b61953e14'/>
<id>urn:sha1:3ff26b29230c54fea2353b63124c589b61953e14</id>
<content type='text'>
According to the Broadcom's reference driver flow control needs to be
enabled for any CPU switch port (5, 7 or 8 - depending on which one is
used). Current code makes it work only for the port 5. Use
dsa_is_cpu_port() which solved that problem.

Signed-off-by: Rafał Miłecki &lt;rafal@milecki.pl&gt;
Reviewed-by: Florian Fainelli &lt;f.fainelli@gmail.com&gt;
Tested-by: Florian Fainelli &lt;f.fainelli@gmail.com&gt;
Signed-off-by: Jakub Kicinski &lt;kuba@kernel.org&gt;
</content>
</entry>
<entry>
<title>net: dsa: b53: Drop BCM5301x workaround for a wrong CPU/IMP port</title>
<updated>2021-09-17T02:06:35Z</updated>
<author>
<name>Rafał Miłecki</name>
</author>
<published>2021-09-16T12:03:52Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=b290c6384afabbca5ae6e2af72fb1b2bc37922be'/>
<id>urn:sha1:b290c6384afabbca5ae6e2af72fb1b2bc37922be</id>
<content type='text'>
On BCM5301x port 8 requires a fixed link when used.

Years ago when b53 was an OpenWrt downstream driver (with configuration
based on sometimes bugged NVRAM) there was a need for a fixup. In case
of forcing fixed link for (incorrectly specified) port 5 the code had to
actually setup port 8 link.

For upstream b53 driver with setup based on DT there is no need for that
workaround. In DT we have and require correct ports setup.

Signed-off-by: Rafał Miłecki &lt;rafal@milecki.pl&gt;
Reviewed-by: Florian Fainelli &lt;f.fainelli@gmail.com&gt;
Tested-by: Florian Fainelli &lt;f.fainelli@gmail.com&gt;
Signed-off-by: Jakub Kicinski &lt;kuba@kernel.org&gt;
</content>
</entry>
</feed>
