711-02-net-dsa-qca8k-enable-flooding-to-both-CPU-port.patch 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. From b954d61d9ecfa64450fc178586719dc2a95b92a7 Mon Sep 17 00:00:00 2001
  2. From: Christian Marangi <[email protected]>
  3. Date: Tue, 20 Jun 2023 21:48:24 +0200
  4. Subject: [PATCH 3/4] net: dsa: qca8k: enable flooding to both CPU port
  5. To permit a multi-CPU setup, flood all unknown frames to all CPU ports.
  6. Each CPU port should have correct LOOKUP MEMBER configuration to
  7. prevent receiving duplicate packets from user ports.
  8. Signed-off-by: Christian Marangi <[email protected]>
  9. ---
  10. drivers/net/dsa/qca/qca8k-8xxx.c | 13 +++++--------
  11. 1 file changed, 5 insertions(+), 8 deletions(-)
  12. --- a/drivers/net/dsa/qca/qca8k-8xxx.c
  13. +++ b/drivers/net/dsa/qca/qca8k-8xxx.c
  14. @@ -1901,15 +1901,12 @@ qca8k_setup(struct dsa_switch *ds)
  15. }
  16. }
  17. - /* Forward all unknown frames to CPU port for Linux processing
  18. - * Notice that in multi-cpu config only one port should be set
  19. - * for igmp, unknown, multicast and broadcast packet
  20. - */
  21. + /* Forward all unknown frames to CPU port for Linux processing */
  22. ret = qca8k_write(priv, QCA8K_REG_GLOBAL_FW_CTRL1,
  23. - FIELD_PREP(QCA8K_GLOBAL_FW_CTRL1_IGMP_DP_MASK, BIT(cpu_port)) |
  24. - FIELD_PREP(QCA8K_GLOBAL_FW_CTRL1_BC_DP_MASK, BIT(cpu_port)) |
  25. - FIELD_PREP(QCA8K_GLOBAL_FW_CTRL1_MC_DP_MASK, BIT(cpu_port)) |
  26. - FIELD_PREP(QCA8K_GLOBAL_FW_CTRL1_UC_DP_MASK, BIT(cpu_port)));
  27. + FIELD_PREP(QCA8K_GLOBAL_FW_CTRL1_IGMP_DP_MASK, dsa_cpu_ports(ds)) |
  28. + FIELD_PREP(QCA8K_GLOBAL_FW_CTRL1_BC_DP_MASK, dsa_cpu_ports(ds)) |
  29. + FIELD_PREP(QCA8K_GLOBAL_FW_CTRL1_MC_DP_MASK, dsa_cpu_ports(ds)) |
  30. + FIELD_PREP(QCA8K_GLOBAL_FW_CTRL1_UC_DP_MASK, dsa_cpu_ports(ds)));
  31. if (ret)
  32. return ret;