netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v3 net-next 0/7] smsc W=1 warning fixes
@ 2020-11-10  3:02 Andrew Lunn
  2020-11-10  3:02 ` [PATCH v3 net-next 1/7] drivers: net: smc91x: Fix set but unused W=1 warning Andrew Lunn
                   ` (7 more replies)
  0 siblings, 8 replies; 9+ messages in thread
From: Andrew Lunn @ 2020-11-10  3:02 UTC (permalink / raw)
  To: Jakub Kicinski; +Cc: netdev, Nicolas Pitre, Andrew Lunn

Fixup various W=1 warnings, and then add COMPILE_TEST support, which
explains why these where missed on the previous pass.

v2:
Use while (0)
Rework buffer alignment to make it clearer

v3:
Access the length from the hardware and Use __always_unused to tell the
compiler we want to discard the value.

Andrew Lunn (7):
  drivers: net: smc91x: Fix set but unused W=1 warning
  drivers: net: smc91x: Fix missing kerneldoc reported by W=1
  drivers: net: smc911x: Work around set but unused status
  drivers: net: smc911x: Fix set but unused status because of DBG macro
  drivers: net: smc911x: Fix passing wrong number of parameters to DBG()
    macro
  drivers: net: smc911x: Fix cast from pointer to integer of different
    size
  drivers: net: smsc: Add COMPILE_TEST support

 drivers/net/ethernet/smsc/Kconfig   |  6 +++---
 drivers/net/ethernet/smsc/smc911x.c | 17 +++++++++--------
 drivers/net/ethernet/smsc/smc91x.c  |  9 ++++++++-
 3 files changed, 20 insertions(+), 12 deletions(-)

-- 
2.29.2


^ permalink raw reply	[flat|nested] 9+ messages in thread

* [PATCH v3 net-next 1/7] drivers: net: smc91x: Fix set but unused W=1 warning
  2020-11-10  3:02 [PATCH v3 net-next 0/7] smsc W=1 warning fixes Andrew Lunn
@ 2020-11-10  3:02 ` Andrew Lunn
  2020-11-10  3:02 ` [PATCH v3 net-next 2/7] drivers: net: smc91x: Fix missing kerneldoc reported by W=1 Andrew Lunn
                   ` (6 subsequent siblings)
  7 siblings, 0 replies; 9+ messages in thread
From: Andrew Lunn @ 2020-11-10  3:02 UTC (permalink / raw)
  To: Jakub Kicinski; +Cc: netdev, Nicolas Pitre, Andrew Lunn

drivers/net/ethernet/smsc/smc91x.c:706:51: warning: variable ‘pkt_len’ set but not used [-Wunused-but-set-variable]
  706 |  unsigned int saved_packet, packet_no, tx_status, pkt_len;

The read of the packet length in the descriptor probably needs to be
kept in order to keep the hardware happy. So tell the compiler we
don't expect to use the value by using the __always_unused attribute.

Signed-off-by: Andrew Lunn <andrew@lunn.ch>
---
 drivers/net/ethernet/smsc/smc91x.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/smsc/smc91x.c b/drivers/net/ethernet/smsc/smc91x.c
index f6b73afd1879..c8dabeaab4fc 100644
--- a/drivers/net/ethernet/smsc/smc91x.c
+++ b/drivers/net/ethernet/smsc/smc91x.c
@@ -703,7 +703,8 @@ static void smc_tx(struct net_device *dev)
 {
 	struct smc_local *lp = netdev_priv(dev);
 	void __iomem *ioaddr = lp->base;
-	unsigned int saved_packet, packet_no, tx_status, pkt_len;
+	unsigned int saved_packet, packet_no, tx_status;
+	unsigned int pkt_len __always_unused;
 
 	DBG(3, dev, "%s\n", __func__);
 
-- 
2.29.2


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH v3 net-next 2/7] drivers: net: smc91x: Fix missing kerneldoc reported by W=1
  2020-11-10  3:02 [PATCH v3 net-next 0/7] smsc W=1 warning fixes Andrew Lunn
  2020-11-10  3:02 ` [PATCH v3 net-next 1/7] drivers: net: smc91x: Fix set but unused W=1 warning Andrew Lunn
@ 2020-11-10  3:02 ` Andrew Lunn
  2020-11-10  3:02 ` [PATCH v3 net-next 3/7] drivers: net: smc911x: Work around set but unused status Andrew Lunn
                   ` (5 subsequent siblings)
  7 siblings, 0 replies; 9+ messages in thread
From: Andrew Lunn @ 2020-11-10  3:02 UTC (permalink / raw)
  To: Jakub Kicinski; +Cc: netdev, Nicolas Pitre, Andrew Lunn

drivers/net/ethernet/smsc/smc91x.c:2199: warning: Function parameter or member 'dev' not described in 'try_toggle_control_gpio'
drivers/net/ethernet/smsc/smc91x.c:2199: warning: Function parameter or member 'desc' not described in 'try_toggle_control_gpio'
drivers/net/ethernet/smsc/smc91x.c:2199: warning: Function parameter or member 'name' not described in 'try_toggle_control_gpio'
drivers/net/ethernet/smsc/smc91x.c:2199: warning: Function parameter or member 'index' not described in 'try_toggle_control_gpio'
drivers/net/ethernet/smsc/smc91x.c:2199: warning: Function parameter or member 'value' not described in 'try_toggle_control_gpio'
drivers/net/ethernet/smsc/smc91x.c:2199: warning: Function parameter or member 'nsdelay' not described in 'try_toggle_control_gpio'

Document these parameters.

Signed-off-by: Andrew Lunn <andrew@lunn.ch>
---
 drivers/net/ethernet/smsc/smc91x.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/drivers/net/ethernet/smsc/smc91x.c b/drivers/net/ethernet/smsc/smc91x.c
index c8dabeaab4fc..742a1f7a838c 100644
--- a/drivers/net/ethernet/smsc/smc91x.c
+++ b/drivers/net/ethernet/smsc/smc91x.c
@@ -2192,6 +2192,12 @@ MODULE_DEVICE_TABLE(of, smc91x_match);
 
 /**
  * of_try_set_control_gpio - configure a gpio if it exists
+ * @dev: net device
+ * @desc: where to store the GPIO descriptor, if it exists
+ * @name: name of the GPIO in DT
+ * @index: index of the GPIO in DT
+ * @value: set the GPIO to this value
+ * @nsdelay: delay before setting the GPIO
  */
 static int try_toggle_control_gpio(struct device *dev,
 				   struct gpio_desc **desc,
-- 
2.29.2


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH v3 net-next 3/7] drivers: net: smc911x: Work around set but unused status
  2020-11-10  3:02 [PATCH v3 net-next 0/7] smsc W=1 warning fixes Andrew Lunn
  2020-11-10  3:02 ` [PATCH v3 net-next 1/7] drivers: net: smc91x: Fix set but unused W=1 warning Andrew Lunn
  2020-11-10  3:02 ` [PATCH v3 net-next 2/7] drivers: net: smc91x: Fix missing kerneldoc reported by W=1 Andrew Lunn
@ 2020-11-10  3:02 ` Andrew Lunn
  2020-11-10  3:02 ` [PATCH v3 net-next 4/7] drivers: net: smc911x: Fix set but unused status because of DBG macro Andrew Lunn
                   ` (4 subsequent siblings)
  7 siblings, 0 replies; 9+ messages in thread
From: Andrew Lunn @ 2020-11-10  3:02 UTC (permalink / raw)
  To: Jakub Kicinski; +Cc: netdev, Nicolas Pitre, Andrew Lunn

drivers/net/ethernet/smsc/smc911x.c: In function ‘smc911x_phy_interrupt’:
drivers/net/ethernet/smsc/smc911x.c:976:6: warning: variable ‘status’ set but not used [-Wunused-but-set-variable]
  976 |  int status;

A comment indicates the status needs to be read from the PHY,
otherwise bad things happen. But due to the macro magic, it is hard to
perform the read without assigning it to a variable. So add
_always_unused attribute to status to tell the compiler we don't
expect to use the value.

Signed-off-by: Andrew Lunn <andrew@lunn.ch>
---
 drivers/net/ethernet/smsc/smc911x.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/net/ethernet/smsc/smc911x.c b/drivers/net/ethernet/smsc/smc911x.c
index 01069dfaf75c..8f748a0c057e 100644
--- a/drivers/net/ethernet/smsc/smc911x.c
+++ b/drivers/net/ethernet/smsc/smc911x.c
@@ -879,7 +879,7 @@ static void smc911x_phy_configure(struct work_struct *work)
 	int phyaddr = lp->mii.phy_id;
 	int my_phy_caps; /* My PHY capabilities */
 	int my_ad_caps; /* My Advertised capabilities */
-	int status;
+	int status __always_unused;
 	unsigned long flags;
 
 	DBG(SMC_DEBUG_FUNC, dev, "--> %s()\n", __func__);
@@ -973,7 +973,7 @@ static void smc911x_phy_interrupt(struct net_device *dev)
 {
 	struct smc911x_local *lp = netdev_priv(dev);
 	int phyaddr = lp->mii.phy_id;
-	int status;
+	int status __always_unused;
 
 	DBG(SMC_DEBUG_FUNC, dev, "--> %s\n", __func__);
 
-- 
2.29.2


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH v3 net-next 4/7] drivers: net: smc911x: Fix set but unused status because of DBG macro
  2020-11-10  3:02 [PATCH v3 net-next 0/7] smsc W=1 warning fixes Andrew Lunn
                   ` (2 preceding siblings ...)
  2020-11-10  3:02 ` [PATCH v3 net-next 3/7] drivers: net: smc911x: Work around set but unused status Andrew Lunn
@ 2020-11-10  3:02 ` Andrew Lunn
  2020-11-10  3:02 ` [PATCH v3 net-next 5/7] drivers: net: smc911x: Fix passing wrong number of parameters to DBG() macro Andrew Lunn
                   ` (3 subsequent siblings)
  7 siblings, 0 replies; 9+ messages in thread
From: Andrew Lunn @ 2020-11-10  3:02 UTC (permalink / raw)
  To: Jakub Kicinski; +Cc: netdev, Nicolas Pitre, Andrew Lunn

drivers/net/ethernet/smsc/smc911x.c: In function ‘smc911x_timeout’:
drivers/net/ethernet/smsc/smc911x.c:1251:6: warning: variable ‘status’ set but not used [-Wunused-but-set-variable]
 1251 |  int status, mask;

The status is read in order to print it via the DBG macro. However,
due to the way DBG is disabled, the compiler never sees it being used.

Change the DBG macro to actually make use of the passed parameters,
and the leave the optimiser to remove the unwanted code inside the
while (0).

Signed-off-by: Andrew Lunn <andrew@lunn.ch>
---
 drivers/net/ethernet/smsc/smc911x.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/smsc/smc911x.c b/drivers/net/ethernet/smsc/smc911x.c
index 8f748a0c057e..6978050496ac 100644
--- a/drivers/net/ethernet/smsc/smc911x.c
+++ b/drivers/net/ethernet/smsc/smc911x.c
@@ -102,7 +102,10 @@ MODULE_ALIAS("platform:smc911x");
 
 #define PRINTK(dev, args...)   netdev_info(dev, args)
 #else
-#define DBG(n, dev, args...)   do { } while (0)
+#define DBG(n, dev, args...)			 \
+	while (0) {				 \
+		netdev_dbg(dev, args);		 \
+	}
 #define PRINTK(dev, args...)   netdev_dbg(dev, args)
 #endif
 
-- 
2.29.2


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH v3 net-next 5/7] drivers: net: smc911x: Fix passing wrong number of parameters to DBG() macro
  2020-11-10  3:02 [PATCH v3 net-next 0/7] smsc W=1 warning fixes Andrew Lunn
                   ` (3 preceding siblings ...)
  2020-11-10  3:02 ` [PATCH v3 net-next 4/7] drivers: net: smc911x: Fix set but unused status because of DBG macro Andrew Lunn
@ 2020-11-10  3:02 ` Andrew Lunn
  2020-11-10  3:02 ` [PATCH v3 net-next 6/7] drivers: net: smc911x: Fix cast from pointer to integer of different size Andrew Lunn
                   ` (2 subsequent siblings)
  7 siblings, 0 replies; 9+ messages in thread
From: Andrew Lunn @ 2020-11-10  3:02 UTC (permalink / raw)
  To: Jakub Kicinski; +Cc: netdev, Nicolas Pitre, Andrew Lunn

Now that the compiler always sees the parameters passed to the DBG()
macro, it gives an error message about wrong parameters. The comment
says it all:

	/* ndev is not valid yet, so avoid passing it in. */
	DBG(SMC_DEBUG_FUNC, "--> %s\n",  __func__);

You cannot not just pass a parameter!

The DBG does not seem to have any real value, to just remove it.

Signed-off-by: Andrew Lunn <andrew@lunn.ch>
---
 drivers/net/ethernet/smsc/smc911x.c | 2 --
 1 file changed, 2 deletions(-)

diff --git a/drivers/net/ethernet/smsc/smc911x.c b/drivers/net/ethernet/smsc/smc911x.c
index 6978050496ac..ac1a764364fb 100644
--- a/drivers/net/ethernet/smsc/smc911x.c
+++ b/drivers/net/ethernet/smsc/smc911x.c
@@ -2047,8 +2047,6 @@ static int smc911x_drv_probe(struct platform_device *pdev)
 	void __iomem *addr;
 	int ret;
 
-	/* ndev is not valid yet, so avoid passing it in. */
-	DBG(SMC_DEBUG_FUNC, "--> %s\n",  __func__);
 	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
 	if (!res) {
 		ret = -ENODEV;
-- 
2.29.2


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH v3 net-next 6/7] drivers: net: smc911x: Fix cast from pointer to integer of different size
  2020-11-10  3:02 [PATCH v3 net-next 0/7] smsc W=1 warning fixes Andrew Lunn
                   ` (4 preceding siblings ...)
  2020-11-10  3:02 ` [PATCH v3 net-next 5/7] drivers: net: smc911x: Fix passing wrong number of parameters to DBG() macro Andrew Lunn
@ 2020-11-10  3:02 ` Andrew Lunn
  2020-11-10  3:02 ` [PATCH v3 net-next 7/7] drivers: net: smsc: Add COMPILE_TEST support Andrew Lunn
  2020-11-12 22:51 ` [PATCH v3 net-next 0/7] smsc W=1 warning fixes Jakub Kicinski
  7 siblings, 0 replies; 9+ messages in thread
From: Andrew Lunn @ 2020-11-10  3:02 UTC (permalink / raw)
  To: Jakub Kicinski; +Cc: netdev, Nicolas Pitre, Andrew Lunn

drivers/net/ethernet/smsc/smc911x.c: In function ‘smc911x_hardware_send_pkt’:
drivers/net/ethernet/smsc/smc911x.c:471:11: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
  471 |  cmdA = (((u32)skb->data & 0x3) << 16) |

When built on 64bit targets, the skb->data pointer cannot be cast to a
u32 in a meaningful way. Use uintptr_t instead.

Suggested-by: Nicolas Pitre <nico@fluxnic.net>
Signed-off-by: Andrew Lunn <andrew@lunn.ch>
---
 drivers/net/ethernet/smsc/smc911x.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/net/ethernet/smsc/smc911x.c b/drivers/net/ethernet/smsc/smc911x.c
index ac1a764364fb..22cdbf12c823 100644
--- a/drivers/net/ethernet/smsc/smc911x.c
+++ b/drivers/net/ethernet/smsc/smc911x.c
@@ -465,9 +465,9 @@ static void smc911x_hardware_send_pkt(struct net_device *dev)
 			TX_CMD_A_INT_FIRST_SEG_ | TX_CMD_A_INT_LAST_SEG_ |
 			skb->len;
 #else
-	buf = (char*)((u32)skb->data & ~0x3);
-	len = (skb->len + 3 + ((u32)skb->data & 3)) & ~0x3;
-	cmdA = (((u32)skb->data & 0x3) << 16) |
+	buf = (char *)((uintptr_t)skb->data & ~0x3);
+	len = (skb->len + 3 + ((uintptr_t)skb->data & 3)) & ~0x3;
+	cmdA = (((uintptr_t)skb->data & 0x3) << 16) |
 			TX_CMD_A_INT_FIRST_SEG_ | TX_CMD_A_INT_LAST_SEG_ |
 			skb->len;
 #endif
-- 
2.29.2


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH v3 net-next 7/7] drivers: net: smsc: Add COMPILE_TEST support
  2020-11-10  3:02 [PATCH v3 net-next 0/7] smsc W=1 warning fixes Andrew Lunn
                   ` (5 preceding siblings ...)
  2020-11-10  3:02 ` [PATCH v3 net-next 6/7] drivers: net: smc911x: Fix cast from pointer to integer of different size Andrew Lunn
@ 2020-11-10  3:02 ` Andrew Lunn
  2020-11-12 22:51 ` [PATCH v3 net-next 0/7] smsc W=1 warning fixes Jakub Kicinski
  7 siblings, 0 replies; 9+ messages in thread
From: Andrew Lunn @ 2020-11-10  3:02 UTC (permalink / raw)
  To: Jakub Kicinski; +Cc: netdev, Nicolas Pitre, Andrew Lunn

Improve the build testing of these SMSC drivers by enabling them when
COMPILE_TEST is selected.

Signed-off-by: Andrew Lunn <andrew@lunn.ch>
---
 drivers/net/ethernet/smsc/Kconfig | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/net/ethernet/smsc/Kconfig b/drivers/net/ethernet/smsc/Kconfig
index b77e427e6729..c52a38df0e0d 100644
--- a/drivers/net/ethernet/smsc/Kconfig
+++ b/drivers/net/ethernet/smsc/Kconfig
@@ -8,7 +8,7 @@ config NET_VENDOR_SMSC
 	default y
 	depends on ARM || ARM64 || ATARI_ETHERNAT || COLDFIRE || \
 		   ISA || MAC || MIPS || NIOS2 || PCI || \
-		   PCMCIA || SUPERH || XTENSA || H8300
+		   PCMCIA || SUPERH || XTENSA || H8300 || COMPILE_TEST
 	help
 	  If you have a network (Ethernet) card belonging to this class, say Y.
 
@@ -39,7 +39,7 @@ config SMC91X
 	select MII
 	depends on !OF || GPIOLIB
 	depends on ARM || ARM64 || ATARI_ETHERNAT || COLDFIRE || \
-		   MIPS || NIOS2 || SUPERH || XTENSA || H8300
+		   MIPS || NIOS2 || SUPERH || XTENSA || H8300 || COMPILE_TEST
 	help
 	  This is a driver for SMC's 91x series of Ethernet chipsets,
 	  including the SMC91C94 and the SMC91C111. Say Y if you want it
@@ -78,7 +78,7 @@ config SMC911X
 	tristate "SMSC LAN911[5678] support"
 	select CRC32
 	select MII
-	depends on (ARM || SUPERH)
+	depends on (ARM || SUPERH || COMPILE_TEST)
 	help
 	  This is a driver for SMSC's LAN911x series of Ethernet chipsets
 	  including the new LAN9115, LAN9116, LAN9117, and LAN9118.
-- 
2.29.2


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [PATCH v3 net-next 0/7] smsc W=1 warning fixes
  2020-11-10  3:02 [PATCH v3 net-next 0/7] smsc W=1 warning fixes Andrew Lunn
                   ` (6 preceding siblings ...)
  2020-11-10  3:02 ` [PATCH v3 net-next 7/7] drivers: net: smsc: Add COMPILE_TEST support Andrew Lunn
@ 2020-11-12 22:51 ` Jakub Kicinski
  7 siblings, 0 replies; 9+ messages in thread
From: Jakub Kicinski @ 2020-11-12 22:51 UTC (permalink / raw)
  To: Andrew Lunn; +Cc: netdev, Nicolas Pitre

On Tue, 10 Nov 2020 04:02:41 +0100 Andrew Lunn wrote:
> Fixup various W=1 warnings, and then add COMPILE_TEST support, which
> explains why these where missed on the previous pass.
> 
> v2:
> Use while (0)
> Rework buffer alignment to make it clearer
> 
> v3:
> Access the length from the hardware and Use __always_unused to tell the
> compiler we want to discard the value.

Applied, thank you!

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2020-11-12 22:51 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-11-10  3:02 [PATCH v3 net-next 0/7] smsc W=1 warning fixes Andrew Lunn
2020-11-10  3:02 ` [PATCH v3 net-next 1/7] drivers: net: smc91x: Fix set but unused W=1 warning Andrew Lunn
2020-11-10  3:02 ` [PATCH v3 net-next 2/7] drivers: net: smc91x: Fix missing kerneldoc reported by W=1 Andrew Lunn
2020-11-10  3:02 ` [PATCH v3 net-next 3/7] drivers: net: smc911x: Work around set but unused status Andrew Lunn
2020-11-10  3:02 ` [PATCH v3 net-next 4/7] drivers: net: smc911x: Fix set but unused status because of DBG macro Andrew Lunn
2020-11-10  3:02 ` [PATCH v3 net-next 5/7] drivers: net: smc911x: Fix passing wrong number of parameters to DBG() macro Andrew Lunn
2020-11-10  3:02 ` [PATCH v3 net-next 6/7] drivers: net: smc911x: Fix cast from pointer to integer of different size Andrew Lunn
2020-11-10  3:02 ` [PATCH v3 net-next 7/7] drivers: net: smsc: Add COMPILE_TEST support Andrew Lunn
2020-11-12 22:51 ` [PATCH v3 net-next 0/7] smsc W=1 warning fixes Jakub Kicinski

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).