[PATCH 5/7] dsa: marvell: Add helper function to validate the max_frame_size variable

From: Lukasz Majewski
Date: Thu Mar 09 2023 - 07:55:31 EST


This commit shall be regarded as a transition one, as this function helps
to validate the correctness of max_frame_size variable added to
mv88e6xxx_info structure.

It is necessary to avoid regressions as manual assessment of this value
turned out to be error prone.

Signed-off-by: Lukasz Majewski <lukma@xxxxxxx>
Suggested-by: Russell King (Oracle) <linux@xxxxxxxxxxxxxxx>
---
Changes for v5:
- New patch
---
drivers/net/dsa/mv88e6xxx/chip.c | 22 ++++++++++++++++++++++
1 file changed, 22 insertions(+)

diff --git a/drivers/net/dsa/mv88e6xxx/chip.c b/drivers/net/dsa/mv88e6xxx/chip.c
index 9695a1af45a9..af14eb8a1bfd 100644
--- a/drivers/net/dsa/mv88e6xxx/chip.c
+++ b/drivers/net/dsa/mv88e6xxx/chip.c
@@ -7169,6 +7169,27 @@ static int __maybe_unused mv88e6xxx_resume(struct device *dev)

static SIMPLE_DEV_PM_OPS(mv88e6xxx_pm_ops, mv88e6xxx_suspend, mv88e6xxx_resume);

+static void mv88e6xxx_validate_frame_size(void)
+{
+ int max;
+ int i;
+
+ for (i = 0; i < ARRAY_SIZE(mv88e6xxx_table); i++) {
+ /* same logic as in mv88e6xxx_get_max_mtu() */
+ if (mv88e6xxx_table[i].ops->port_set_jumbo_size)
+ max = 10240;
+ else if (mv88e6xxx_table[i].ops->set_max_frame_size)
+ max = 1632;
+ else
+ max = 1522;
+
+ if (mv88e6xxx_table[i].max_frame_size != max)
+ pr_err("BUG: %s has differing max_frame_size: %d != %d\n",
+ mv88e6xxx_table[i].name, max,
+ mv88e6xxx_table[i].max_frame_size);
+ }
+}
+
static int mv88e6xxx_probe(struct mdio_device *mdiodev)
{
struct dsa_mv88e6xxx_pdata *pdata = mdiodev->dev.platform_data;
@@ -7302,6 +7323,7 @@ static int mv88e6xxx_probe(struct mdio_device *mdiodev)
if (err)
goto out_mdio;

+ mv88e6xxx_validate_frame_size();
return 0;

out_mdio:
--
2.20.1