Patchwork net/ehea: bitops work on unsigned longs

login
register
mail settings
Submitter Stephen Rothwell
Date Dec. 31, 2008, 3:18 a.m.
Message ID <20081231141853.c6d123c4.sfr@canb.auug.org.au>
Download mbox | patch
Permalink /patch/16113/
State Accepted
Commit 48e4cc777c091b037acaf39036a77ece43fe1ab9
Headers show

Comments

Stephen Rothwell - Dec. 31, 2008, 3:18 a.m.
These changes will avoid several warnings when we change u64 to unsigned
long long.

Also, ehea_driver_flags is only used in ehca_main.c

Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
---
 drivers/net/ehea/ehea.h      |    3 +--
 drivers/net/ehea/ehea_main.c |    2 +-
 2 files changed, 2 insertions(+), 3 deletions(-)
David Miller - Dec. 31, 2008, 5:51 a.m.
From: Stephen Rothwell <sfr@canb.auug.org.au>
Date: Wed, 31 Dec 2008 14:18:53 +1100

> These changes will avoid several warnings when we change u64 to unsigned
> long long.
> 
> Also, ehea_driver_flags is only used in ehca_main.c
> 
> Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
> ---

And also rejected, just like the previous two.

This is so much worse than the problems we had with
printing u64's and it's being done as a result to
the "fix" for that.

Please let's not do this...
Benjamin Herrenschmidt - Dec. 31, 2008, 9:02 a.m.
On Tue, 2008-12-30 at 21:51 -0800, David Miller wrote:
> From: Stephen Rothwell <sfr@canb.auug.org.au>
> Date: Wed, 31 Dec 2008 14:18:53 +1100
> 
> > These changes will avoid several warnings when we change u64 to unsigned
> > long long.
> > 
> > Also, ehea_driver_flags is only used in ehca_main.c
> > 
> > Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
> > ---
> 
> And also rejected, just like the previous two.
> 
> This is so much worse than the problems we had with
> printing u64's and it's being done as a result to
> the "fix" for that.

Hi David !

I think this patch specifically is different and deserve a second look.

While the other patches are somewhat debatable (I do agree with you for
example that we shouldn't break the possibility of building for 32-bit,
and we shouldn't artifically add crud to silence warnings caused by the
u64 type change etc... I'll send separate replies to the other messages
later), in the case of this specific patch, I think it's actually more
correct to define a "flags" field that is used by set_bit() and
test_bit() using "long" rather than "u64" (for that same reason you
mention, which is 32/64-bit compatibility).

IE. The bitops operate on longs. Thus the field should be a long,
period. The compatibility here consists of making sure we don't use bits
above 31, which in this case is find since we use a short enum.

Thus the patch is makes the code cleaner and more correct regardless of
the type change of u64.

So from my side, this patch is

Acked-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>

Cheers,
Ben.

Patch

diff --git a/drivers/net/ehea/ehea.h b/drivers/net/ehea/ehea.h
index 9930d5f..6271b94 100644
--- a/drivers/net/ehea/ehea.h
+++ b/drivers/net/ehea/ehea.h
@@ -478,7 +478,7 @@  struct ehea_port {
 	int num_add_tx_qps;
 	int num_mcs;
 	int resets;
-	u64 flags;
+	unsigned long flags;
 	u64 mac_addr;
 	u32 logical_port_id;
 	u32 port_speed;
@@ -510,7 +510,6 @@  void ehea_set_ethtool_ops(struct net_device *netdev);
 int ehea_sense_port_attr(struct ehea_port *port);
 int ehea_set_portspeed(struct ehea_port *port, u32 port_speed);
 
-extern u64 ehea_driver_flags;
 extern struct work_struct ehea_rereg_mr_task;
 
 #endif	/* __EHEA_H__ */
diff --git a/drivers/net/ehea/ehea_main.c b/drivers/net/ehea/ehea_main.c
index a2f1905..e3131ea 100644
--- a/drivers/net/ehea/ehea_main.c
+++ b/drivers/net/ehea/ehea_main.c
@@ -99,7 +99,7 @@  MODULE_PARM_DESC(use_lro, " Large Receive Offload, 1: enable, 0: disable, "
 
 static int port_name_cnt;
 static LIST_HEAD(adapter_list);
-u64 ehea_driver_flags;
+static unsigned long ehea_driver_flags;
 struct work_struct ehea_rereg_mr_task;
 static DEFINE_MUTEX(dlpar_mem_lock);
 struct ehea_fw_handle_array ehea_fw_handles;