[net-next PATCH v5 00/14] net: dsa: qca8k: code split for qca8k

Christian Marangi posted 14 patches 3 years, 8 months ago
drivers/net/dsa/qca/Makefile                  |    1 +
drivers/net/dsa/qca/{qca8k.c => qca8k-8xxx.c} | 1711 +++--------------
drivers/net/dsa/qca/qca8k-common.c            | 1210 ++++++++++++
drivers/net/dsa/qca/qca8k.h                   |  100 +
4 files changed, 1549 insertions(+), 1473 deletions(-)
rename drivers/net/dsa/qca/{qca8k.c => qca8k-8xxx.c} (63%)
create mode 100644 drivers/net/dsa/qca/qca8k-common.c
[net-next PATCH v5 00/14] net: dsa: qca8k: code split for qca8k
Posted by Christian Marangi 3 years, 8 months ago
This is needed ad ipq4019 SoC have an internal switch that is
based on qca8k with very minor changes. The general function is equal.

Because of this we split the driver to common and specific code.

As the common function needs to be moved to a different file to be
reused, we had to convert every remaining user of qca8k_read/write/rmw
to regmap variant.
We had also to generilized the special handling for the ethtool_stats
function that makes use of the autocast mib. (ipq4019 will have a
different tagger and use mmio so it could be quicker to use mmio instead
of automib feature)
And we had to convert the regmap read/write to bulk implementation to
drop the special function that makes use of it. This will be compatible
with ipq4019 and at the same time permits normal switch to use the eth
mgmt way to send the entire ATU table read/write in one go.

v5:
- Wrap function to single line/80 char
- Cache match data even for read_switch function
- Add additional review tag
v4:
- Fix compilation error with clang compiler reported by kernel
  test bot
v3:
- Squash more patch to skip even more "migration patch"
- Add new patch to cache match data in priv struct
- Fix extra space
- Drop unnecessary cast to qca8k_priv from void pointers
v2:
- Rework patch to drop dependency with bulk regmap (will be
  converted later)
- Split the split patch to additional patch
- Rework autocast_mib function and move it to match data

Christian Marangi (14):
  net: dsa: qca8k: cache match data to speed up access
  net: dsa: qca8k: make mib autocast feature optional
  net: dsa: qca8k: move mib struct to common code
  net: dsa: qca8k: move qca8k read/write/rmw and reg table to common
    code
  net: dsa: qca8k: move qca8k bulk read/write helper to common code
  net: dsa: qca8k: move mib init function to common code
  net: dsa: qca8k: move port set status/eee/ethtool stats function to
    common code
  net: dsa: qca8k: move bridge functions to common code
  net: dsa: qca8k: move set age/MTU/port enable/disable functions to
    common code
  net: dsa: qca8k: move port FDB/MDB function to common code
  net: dsa: qca8k: move port mirror functions to common code
  net: dsa: qca8k: move port VLAN functions to common code
  net: dsa: qca8k: move port LAG functions to common code
  net: dsa: qca8k: move read_switch_id function to common code

 drivers/net/dsa/qca/Makefile                  |    1 +
 drivers/net/dsa/qca/{qca8k.c => qca8k-8xxx.c} | 1711 +++--------------
 drivers/net/dsa/qca/qca8k-common.c            | 1210 ++++++++++++
 drivers/net/dsa/qca/qca8k.h                   |  100 +
 4 files changed, 1549 insertions(+), 1473 deletions(-)
 rename drivers/net/dsa/qca/{qca8k.c => qca8k-8xxx.c} (63%)
 create mode 100644 drivers/net/dsa/qca/qca8k-common.c

-- 
2.36.1
Re: [net-next PATCH v5 00/14] net: dsa: qca8k: code split for qca8k
Posted by patchwork-bot+netdevbpf@kernel.org 3 years, 8 months ago
Hello:

This series was applied to netdev/net-next.git (master)
by Jakub Kicinski <kuba@kernel.org>:

On Wed, 27 Jul 2022 13:35:09 +0200 you wrote:
> This is needed ad ipq4019 SoC have an internal switch that is
> based on qca8k with very minor changes. The general function is equal.
> 
> Because of this we split the driver to common and specific code.
> 
> As the common function needs to be moved to a different file to be
> reused, we had to convert every remaining user of qca8k_read/write/rmw
> to regmap variant.
> We had also to generilized the special handling for the ethtool_stats
> function that makes use of the autocast mib. (ipq4019 will have a
> different tagger and use mmio so it could be quicker to use mmio instead
> of automib feature)
> And we had to convert the regmap read/write to bulk implementation to
> drop the special function that makes use of it. This will be compatible
> with ipq4019 and at the same time permits normal switch to use the eth
> mgmt way to send the entire ATU table read/write in one go.
> 
> [...]

Here is the summary with links:
  - [net-next,v5,01/14] net: dsa: qca8k: cache match data to speed up access
    https://git.kernel.org/netdev/net-next/c/3bb0844e7bcd
  - [net-next,v5,02/14] net: dsa: qca8k: make mib autocast feature optional
    https://git.kernel.org/netdev/net-next/c/533c64bca62a
  - [net-next,v5,03/14] net: dsa: qca8k: move mib struct to common code
    https://git.kernel.org/netdev/net-next/c/027152b83043
  - [net-next,v5,04/14] net: dsa: qca8k: move qca8k read/write/rmw and reg table to common code
    https://git.kernel.org/netdev/net-next/c/d5f901eab2e9
  - [net-next,v5,05/14] net: dsa: qca8k: move qca8k bulk read/write helper to common code
    https://git.kernel.org/netdev/net-next/c/910746444313
  - [net-next,v5,06/14] net: dsa: qca8k: move mib init function to common code
    https://git.kernel.org/netdev/net-next/c/fce1ec0c4e2d
  - [net-next,v5,07/14] net: dsa: qca8k: move port set status/eee/ethtool stats function to common code
    https://git.kernel.org/netdev/net-next/c/472fcea160f2
  - [net-next,v5,08/14] net: dsa: qca8k: move bridge functions to common code
    https://git.kernel.org/netdev/net-next/c/fd3cae2f3ac1
  - [net-next,v5,09/14] net: dsa: qca8k: move set age/MTU/port enable/disable functions to common code
    https://git.kernel.org/netdev/net-next/c/b3a302b171f7
  - [net-next,v5,10/14] net: dsa: qca8k: move port FDB/MDB function to common code
    https://git.kernel.org/netdev/net-next/c/2e5bd96eea86
  - [net-next,v5,11/14] net: dsa: qca8k: move port mirror functions to common code
    https://git.kernel.org/netdev/net-next/c/742d37a84d3f
  - [net-next,v5,12/14] net: dsa: qca8k: move port VLAN functions to common code
    https://git.kernel.org/netdev/net-next/c/c5290f636624
  - [net-next,v5,13/14] net: dsa: qca8k: move port LAG functions to common code
    https://git.kernel.org/netdev/net-next/c/e9bbf019af44
  - [net-next,v5,14/14] net: dsa: qca8k: move read_switch_id function to common code
    https://git.kernel.org/netdev/net-next/c/9d1bcb1f293f

You are awesome, thank you!
-- 
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html
Re: [net-next PATCH v5 00/14] net: dsa: qca8k: code split for qca8k
Posted by Florian Fainelli 3 years, 8 months ago
On 7/28/22 22:30, patchwork-bot+netdevbpf@kernel.org wrote:
> Hello:
> 
> This series was applied to netdev/net-next.git (master)
> by Jakub Kicinski <kuba@kernel.org>:
> 
> On Wed, 27 Jul 2022 13:35:09 +0200 you wrote:
>> This is needed ad ipq4019 SoC have an internal switch that is
>> based on qca8k with very minor changes. The general function is equal.
>>
>> Because of this we split the driver to common and specific code.
>>
>> As the common function needs to be moved to a different file to be
>> reused, we had to convert every remaining user of qca8k_read/write/rmw
>> to regmap variant.
>> We had also to generilized the special handling for the ethtool_stats
>> function that makes use of the autocast mib. (ipq4019 will have a
>> different tagger and use mmio so it could be quicker to use mmio instead
>> of automib feature)
>> And we had to convert the regmap read/write to bulk implementation to
>> drop the special function that makes use of it. This will be compatible
>> with ipq4019 and at the same time permits normal switch to use the eth
>> mgmt way to send the entire ATU table read/write in one go.
>>
>> [...]
> 
> Here is the summary with links:
>   - [net-next,v5,01/14] net: dsa: qca8k: cache match data to speed up access
>     https://git.kernel.org/netdev/net-next/c/3bb0844e7bcd
>   - [net-next,v5,02/14] net: dsa: qca8k: make mib autocast feature optional
>     https://git.kernel.org/netdev/net-next/c/533c64bca62a
>   - [net-next,v5,03/14] net: dsa: qca8k: move mib struct to common code
>     https://git.kernel.org/netdev/net-next/c/027152b83043
>   - [net-next,v5,04/14] net: dsa: qca8k: move qca8k read/write/rmw and reg table to common code
>     https://git.kernel.org/netdev/net-next/c/d5f901eab2e9
>   - [net-next,v5,05/14] net: dsa: qca8k: move qca8k bulk read/write helper to common code
>     https://git.kernel.org/netdev/net-next/c/910746444313
>   - [net-next,v5,06/14] net: dsa: qca8k: move mib init function to common code
>     https://git.kernel.org/netdev/net-next/c/fce1ec0c4e2d
>   - [net-next,v5,07/14] net: dsa: qca8k: move port set status/eee/ethtool stats function to common code
>     https://git.kernel.org/netdev/net-next/c/472fcea160f2
>   - [net-next,v5,08/14] net: dsa: qca8k: move bridge functions to common code
>     https://git.kernel.org/netdev/net-next/c/fd3cae2f3ac1
>   - [net-next,v5,09/14] net: dsa: qca8k: move set age/MTU/port enable/disable functions to common code
>     https://git.kernel.org/netdev/net-next/c/b3a302b171f7
>   - [net-next,v5,10/14] net: dsa: qca8k: move port FDB/MDB function to common code
>     https://git.kernel.org/netdev/net-next/c/2e5bd96eea86
>   - [net-next,v5,11/14] net: dsa: qca8k: move port mirror functions to common code
>     https://git.kernel.org/netdev/net-next/c/742d37a84d3f
>   - [net-next,v5,12/14] net: dsa: qca8k: move port VLAN functions to common code
>     https://git.kernel.org/netdev/net-next/c/c5290f636624
>   - [net-next,v5,13/14] net: dsa: qca8k: move port LAG functions to common code
>     https://git.kernel.org/netdev/net-next/c/e9bbf019af44
>   - [net-next,v5,14/14] net: dsa: qca8k: move read_switch_id function to common code
>     https://git.kernel.org/netdev/net-next/c/9d1bcb1f293f
> 
> You are awesome, thank you!

Oh well, at least I reviewed the patches :)
-- 
Florian