Skip to contentSkip to conversation

qede: Add support for coalescing config read/update.

DISCUSSION Dan Carpenter 4 participants 5 messages Jun 27, 2016 – Jun 28, 2016 Kernel janitors

lore
Share & tools
lore
#0 lore raw

Hello Sudarsana Reddy Kalluru,

The patch d552fa84cb35: "qede: Add support for coalescing config read/update." from Jun 21, 2016, leads to the following static checker warning:

	drivers/net/ethernet/qlogic/qede/qede_ethtool.c:435 qede_get_coalesce()
	warn: passing casted pointer '&coal->rx_coalesce_usecs' to 'edev->ops->common->get_coalesce()' 32 vs 16.

drivers/net/ethernet/qlogic/qede/qede_ethtool.c
429 static int qede_get_coalesce(struct net_device *dev,
430 struct ethtool_coalesce *coal)
431 {
432 struct qede_dev *edev = netdev_priv(dev);
433
434 memset(coal, 0, sizeof(struct ethtool_coalesce));
435 edev->ops->common->get_coalesce(edev->cdev,
436 (u16 *)&coal->rx_coalesce_usecs,
437 (u16 *)&coal->tx_coalesce_usecs);

This won't work on big endian systems. Fix it so the function takes a u32 or make ->rx_coalesce_usecs a u16.

438
439 return 0;
440 }

regards,
dan carpenter

#1 lore raw

Hi Dan carpenter,
Thanks for your mail. Will address it.

Thanks,
Sudarsana

-----Original Message-----
From: Dan Carpenter [mailto:[email protected]]
Sent: 28 June 2016 01:12
To: Sudarsana Kalluru <[email protected]>
Cc: [email protected]
Subject: re: qede: Add support for coalescing config read/update.

Hello Sudarsana Reddy Kalluru,

The patch d552fa84cb35: "qede: Add support for coalescing config read/update." from Jun 21, 2016, leads to the following static checker warning:

	drivers/net/ethernet/qlogic/qede/qede_ethtool.c:435 qede_get_coalesce()
	warn: passing casted pointer '&coal->rx_coalesce_usecs' to 'edev->ops->common->get_coalesce()' 32 vs 16.

drivers/net/ethernet/qlogic/qede/qede_ethtool.c
429 static int qede_get_coalesce(struct net_device *dev,
430 struct ethtool_coalesce *coal)
431 {
432 struct qede_dev *edev = netdev_priv(dev);
433
434 memset(coal, 0, sizeof(struct ethtool_coalesce));
435 edev->ops->common->get_coalesce(edev->cdev,
436 (u16 *)&coal->rx_coalesce_usecs,
437 (u16 *)&coal->tx_coalesce_usecs);

This won't work on big endian systems. Fix it so the function takes a u32 or make ->rx_coalesce_usecs a u16.

438
439 return 0;
440 }

regards,
dan carpenter

#2 lore raw
In reply to Dan Carpenter

Am 28.06.2016 06:41, schrieb Sudarsana Kalluru:

Quoted 31 lines

Hi Dan carpenter,
Thanks for your mail. Will address it.

Thanks,
Sudarsana

-----Original Message-----
From: Dan Carpenter [mailto:[email protected]]
Sent: 28 June 2016 01:12
To: Sudarsana Kalluru <[email protected]>
Cc: [email protected]
Subject: re: qede: Add support for coalescing config read/update.

Hello Sudarsana Reddy Kalluru,

The patch d552fa84cb35: "qede: Add support for coalescing config read/update." from Jun 21, 2016, leads to the following static checker warning:

	drivers/net/ethernet/qlogic/qede/qede_ethtool.c:435 qede_get_coalesce()
	warn: passing casted pointer '&coal->rx_coalesce_usecs' to 'edev->ops->common->get_coalesce()' 32 vs 16.

drivers/net/ethernet/qlogic/qede/qede_ethtool.c
429 static int qede_get_coalesce(struct net_device *dev,
430 struct ethtool_coalesce *coal)

   431  {
   432          struct qede_dev *edev = netdev_priv(dev);
   433  
   434          memset(coal, 0, sizeof(struct ethtool_coalesce));
   435          edev->ops->common->get_coalesce(edev->cdev,
   436                                          (u16 *)&coal->rx_coalesce_usecs,
   437                                          (u16 *)&coal->tx_coalesce_usecs);
Quoted 3 lines

This won't work on big endian systems. Fix it so the function takes a u32 or make ->rx_coalesce_usecs a u16.

given you do a memset before, what are the chances that coal->rx_coalesce_usecs != 0 ? Is there a dynamic update in the background ?
re,
wh

Quoted 11 lines
   438  
   439          return 0;
   440  }

regards,
dan carpenter
--
To unsubscribe from this list: send the line "unsubscribe kernel-janitors" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html

#3 lore raw
In reply to Dan Carpenter
Quoted 11 lines
Quoted 11 lines

drivers/net/ethernet/qlogic/qede/qede_ethtool.c
429 static int qede_get_coalesce(struct net_device *dev,
430 struct ethtool_coalesce *coal)

   431  {
   432          struct qede_dev *edev = netdev_priv(dev);
   433
   434          memset(coal, 0, sizeof(struct ethtool_coalesce));
   435          edev->ops->common->get_coalesce(edev->cdev,
   436                                          (u16 *)&coal->rx_coalesce_usecs,
   437                                          (u16 *)&coal->tx_coalesce_usecs);
Quoted 6 lines
Quoted 3 lines

This won't work on big endian systems. Fix it so the function takes a u32 or make ->rx_coalesce_usecs a u16.

given you do a memset before, what are the chances that coal-

Quoted 1 line

rx_coalesce_usecs != 0 ?

Is there a dynamic update in the background ?

It's a getter; The entire purpose of the `get_coalesce' function is to fill those fields with actual values.
[Although I noticed that the memset is clearing the `cmd' field, which isn't an intended result]

#4 lore raw
In reply to Dan Carpenter

Am 28.06.2016 09:26, schrieb Yuval Mintz:

Quoted 14 lines
Quoted 14 lines
Quoted 14 lines

drivers/net/ethernet/qlogic/qede/qede_ethtool.c
429 static int qede_get_coalesce(struct net_device *dev,
430 struct ethtool_coalesce *coal)

   431  {
   432          struct qede_dev *edev = netdev_priv(dev);
   433
   434          memset(coal, 0, sizeof(struct ethtool_coalesce));
   435          edev->ops->common->get_coalesce(edev->cdev,
   436                                          (u16 *)&coal->rx_coalesce_usecs,
   437                                          (u16 *)&coal->tx_coalesce_usecs);

This won't work on big endian systems. Fix it so the function takes a u32 or make ->rx_coalesce_usecs a u16.

Quoted 9 lines
Quoted 3 lines

given you do a memset before, what are the chances that coal-

Quoted 1 line

rx_coalesce_usecs != 0 ?

Is there a dynamic update in the background ?

It's a getter; The entire purpose of the `get_coalesce' function is to fill those fields with actual values.
[Although I noticed that the memset is clearing the `cmd' field, which isn't an intended result]

ok i understand, wrong direction :)
re,
wh