Re: linux-next: Tree for Dec 3 (switchdev & TI_CPSW_SWITCHDEV)

From: Grygorii Strashko
Date: Wed Dec 04 2019 - 10:35:48 EST




On 04/12/2019 01:43, Randy Dunlap wrote:
On 12/2/19 8:54 PM, Stephen Rothwell wrote:
Hi all,

Please do not add any material for v5.6 to your linux-next included
trees until after v5.5-rc1 has been released.

Changes since 20191202:

I am seeing this (happens to be on i386; I doubt that it matters):
CONFIG_COMPILE_TEST=y


WARNING: unmet direct dependencies detected for NET_SWITCHDEV
Depends on [n]: NET [=y] && INET [=n]
Selected by [y]:
- TI_CPSW_SWITCHDEV [=y] && NETDEVICES [=y] && ETHERNET [=y] && NET_VENDOR_TI [=y] && (ARCH_DAVINCI || ARCH_OMAP2PLUS || COMPILE_TEST [=y])

because TI_CPSW_SWITCHDEV blindly selects NET_SWITCHDEV even though
INET is not set/enabled, while NET_SWITCHDEV depends on INET.

However, the build succeeds, including net/switchdev/*.

So why does NET_SWITCHDEV depend on INET?

It looks like TI_CPSW_SWITCHDEV should depend on INET (based on the
Kconfig rules), but in practice it doesn't seem to matter to the build.


Thanks for reporting this. I'd like to ask for some advice of how to proceed?
a) change it to "depends on NET_SWITCHDEV" (as it's done in other drivers),
but this will require to add NET_SWITCHDEV in defconfig

b) change it to "imply NET_SWITCHDEV", but then NET_SWITCHDEV can be switched off
manually or by random build and cause build failure of cpsw_new.
To fix build below diff can be used, but TI_CPSW_SWITCHDEV will not be functional

---
diff --git a/drivers/net/ethernet/ti/cpsw_new.c b/drivers/net/ethernet/ti/cpsw_new.c
index 71215db7934b..22e8fc548d48 100644
--- a/drivers/net/ethernet/ti/cpsw_new.c
+++ b/drivers/net/ethernet/ti/cpsw_new.c
@@ -368,8 +368,9 @@ static void cpsw_rx_handler(void *token, int len, int status)
page_pool_recycle_direct(pool, page);
goto requeue;
}
-
+#ifdef CONFIG_NET_SWITCHDEV
skb->offload_fwd_mark = priv->offload_fwd_mark;
+#endif
skb_reserve(skb, headroom);
skb_put(skb, len);
skb->dev = ndev;

Thank you.

--
Best regards,
grygorii