netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 1/3] drivers/staging/rtl8187se: Don't pass huge struct by value
@ 2011-08-12 23:04 Jesper Juhl
  2011-08-13  8:05 ` Stephen Rothwell
  0 siblings, 1 reply; 4+ messages in thread
From: Jesper Juhl @ 2011-08-12 23:04 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: devel, linux-kernel, Andrea Merello, Andre Nogueira,
	Lucas De Marchi, David S. Miller, Stephen Rothwell, Larry Finger,
	Stefan Weil, Ilia Mirkin, netdev

From: Jesper Juhl <jj@chaosbits.net>
Date: Sat, 13 Aug 2011 00:51:40 +0200

struct ieee80211_network is fairly large (more than half a kilobyte),
so let's pass a pointer instead of passing the entire structure by
value when ieee80211_is_54g() and ieee80211_is_shortslot() need to
look at a few members.
Also remove parentheses around the values being returned from those
two functions - 'return' is not a function.

Signed-off-by: Jesper Juhl <jj@chaosbits.net>
---
 drivers/staging/rtl8187se/ieee80211/ieee80211.h    |    4 ++--
 .../rtl8187se/ieee80211/ieee80211_softmac.c        |   14 +++++++-------
 drivers/staging/rtl8187se/r8180_rtl8225z2.c        |    4 ++--
 3 files changed, 11 insertions(+), 11 deletions(-)

diff --git a/drivers/staging/rtl8187se/ieee80211/ieee80211.h b/drivers/staging/rtl8187se/ieee80211/ieee80211.h
index e79a7e2..40dd715 100644
--- a/drivers/staging/rtl8187se/ieee80211/ieee80211.h
+++ b/drivers/staging/rtl8187se/ieee80211/ieee80211.h
@@ -1339,8 +1339,8 @@ int ieee80211_wx_set_mlme(struct ieee80211_device *ieee,
 
 int ieee80211_wx_set_gen_ie(struct ieee80211_device *ieee, u8 *ie, size_t len);
 /* ieee80211_softmac.c */
-extern short ieee80211_is_54g(struct ieee80211_network net);
-extern short ieee80211_is_shortslot(struct ieee80211_network net);
+extern short ieee80211_is_54g(const struct ieee80211_network *net);
+extern short ieee80211_is_shortslot(const struct ieee80211_network *net);
 extern int ieee80211_rx_frame_softmac(struct ieee80211_device *ieee, struct sk_buff *skb,
 			struct ieee80211_rx_stats *rx_stats, u16 type,
 			u16 stype);
diff --git a/drivers/staging/rtl8187se/ieee80211/ieee80211_softmac.c b/drivers/staging/rtl8187se/ieee80211/ieee80211_softmac.c
index 38e67f0..26bacb9 100644
--- a/drivers/staging/rtl8187se/ieee80211/ieee80211_softmac.c
+++ b/drivers/staging/rtl8187se/ieee80211/ieee80211_softmac.c
@@ -32,14 +32,14 @@ u8 rsn_authen_cipher_suite[16][4] = {
 	{0x00,0x0F,0xAC,0x05}, //WEP-104
 };
 
-short ieee80211_is_54g(struct ieee80211_network net)
+short ieee80211_is_54g(const struct ieee80211_network *net)
 {
-	return ((net.rates_ex_len > 0) || (net.rates_len > 4));
+	return (net->rates_ex_len > 0) || (net->rates_len > 4);
 }
 
-short ieee80211_is_shortslot(struct ieee80211_network net)
+short ieee80211_is_shortslot(const struct ieee80211_network *net)
 {
-	return (net.capability & WLAN_CAPABILITY_SHORT_SLOT);
+	return net->capability & WLAN_CAPABILITY_SHORT_SLOT;
 }
 
 /* returns the total length needed for pleacing the RATE MFIE
@@ -789,7 +789,7 @@ static struct sk_buff* ieee80211_probe_resp(struct ieee80211_device *ieee, u8 *d
 	else
 		atim_len = 0;
 
-	if(ieee80211_is_54g(ieee->current_network))
+	if(ieee80211_is_54g(&ieee->current_network))
 		erp_len = 3;
 	else
 		erp_len = 0;
@@ -1258,7 +1258,7 @@ void ieee80211_associate_complete_wq(struct work_struct *work)
 	struct ieee80211_device *ieee = container_of(work, struct ieee80211_device, associate_complete_wq);
 
 	printk(KERN_INFO "Associated successfully\n");
-	if(ieee80211_is_54g(ieee->current_network) &&
+	if(ieee80211_is_54g(&ieee->current_network) &&
 		(ieee->modulation & IEEE80211_OFDM_MODULATION)){
 
 		ieee->rate = 540;
@@ -1379,7 +1379,7 @@ inline void ieee80211_softmac_new_net(struct ieee80211_device *ieee, struct ieee
 				ieee->beinretry = false;
 				queue_work(ieee->wq, &ieee->associate_procedure_wq);
 			}else{
-				if(ieee80211_is_54g(ieee->current_network) &&
+				if(ieee80211_is_54g(&ieee->current_network) &&
 						(ieee->modulation & IEEE80211_OFDM_MODULATION)){
 					ieee->rate = 540;
 					printk(KERN_INFO"Using G rates\n");
diff --git a/drivers/staging/rtl8187se/r8180_rtl8225z2.c b/drivers/staging/rtl8187se/r8180_rtl8225z2.c
index 3f09f76..ee5b867 100644
--- a/drivers/staging/rtl8187se/r8180_rtl8225z2.c
+++ b/drivers/staging/rtl8187se/r8180_rtl8225z2.c
@@ -596,7 +596,7 @@ static void rtl8225_rf_set_chan(struct net_device *dev, short ch)
 {
 	struct r8180_priv *priv = ieee80211_priv(dev);
 	short gset = (priv->ieee80211->state == IEEE80211_LINKED &&
-		ieee80211_is_54g(priv->ieee80211->current_network)) ||
+		ieee80211_is_54g(&priv->ieee80211->current_network)) ||
 		priv->ieee80211->iw_mode == IW_MODE_MONITOR;
 
 	rtl8225_SetTXPowerLevel(dev, ch);
@@ -615,7 +615,7 @@ static void rtl8225_rf_set_chan(struct net_device *dev, short ch)
 	}
 
 	if (priv->ieee80211->state == IEEE80211_LINKED &&
-	    ieee80211_is_shortslot(priv->ieee80211->current_network))
+	    ieee80211_is_shortslot(&priv->ieee80211->current_network))
 		write_nic_byte(dev, SLOT, 0x9);
 	else
 		write_nic_byte(dev, SLOT, 0x14);
-- 
1.7.6


-- 
Jesper Juhl <jj@chaosbits.net>       http://www.chaosbits.net/
Don't top-post http://www.catb.org/jargon/html/T/top-post.html
Plain text mails only, please.


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

* Re: [PATCH 1/3] drivers/staging/rtl8187se: Don't pass huge struct by value
  2011-08-12 23:04 [PATCH 1/3] drivers/staging/rtl8187se: Don't pass huge struct by value Jesper Juhl
@ 2011-08-13  8:05 ` Stephen Rothwell
  2011-08-14 18:32   ` Jesper Juhl
  0 siblings, 1 reply; 4+ messages in thread
From: Stephen Rothwell @ 2011-08-13  8:05 UTC (permalink / raw)
  To: Jesper Juhl
  Cc: Greg Kroah-Hartman, devel, linux-kernel, Andrea Merello,
	Andre Nogueira, Lucas De Marchi, David S. Miller, Larry Finger,
	Stefan Weil, Ilia Mirkin, netdev

[-- Attachment #1: Type: text/plain, Size: 759 bytes --]

Hi all,

On Sat, 13 Aug 2011 01:04:36 +0200 (CEST) Jesper Juhl <jj@chaosbits.net> wrote:
>
> From: Jesper Juhl <jj@chaosbits.net>
> Date: Sat, 13 Aug 2011 00:51:40 +0200
> 
> struct ieee80211_network is fairly large (more than half a kilobyte),
> so let's pass a pointer instead of passing the entire structure by
> value when ieee80211_is_54g() and ieee80211_is_shortslot() need to
> look at a few members.
> Also remove parentheses around the values being returned from those
> two functions - 'return' is not a function.

Also, is there some reason that they are not "static inline bool"
functions defined directlt in ieee80211.h?

-- 
Cheers,
Stephen Rothwell                    sfr@canb.auug.org.au
http://www.canb.auug.org.au/~sfr/

[-- Attachment #2: Type: application/pgp-signature, Size: 490 bytes --]

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

* Re: [PATCH 1/3] drivers/staging/rtl8187se: Don't pass huge struct by value
  2011-08-13  8:05 ` Stephen Rothwell
@ 2011-08-14 18:32   ` Jesper Juhl
  2011-08-14 23:58     ` Stephen Rothwell
  0 siblings, 1 reply; 4+ messages in thread
From: Jesper Juhl @ 2011-08-14 18:32 UTC (permalink / raw)
  To: Stephen Rothwell
  Cc: Greg Kroah-Hartman, devel, linux-kernel, Andrea Merello,
	Andre Nogueira, Lucas De Marchi, David S. Miller, Larry Finger,
	Stefan Weil, Ilia Mirkin, netdev

On Sat, 13 Aug 2011, Stephen Rothwell wrote:

> Hi all,
> 
> On Sat, 13 Aug 2011 01:04:36 +0200 (CEST) Jesper Juhl <jj@chaosbits.net> wrote:
> >
> > From: Jesper Juhl <jj@chaosbits.net>
> > Date: Sat, 13 Aug 2011 00:51:40 +0200
> > 
> > struct ieee80211_network is fairly large (more than half a kilobyte),
> > so let's pass a pointer instead of passing the entire structure by
> > value when ieee80211_is_54g() and ieee80211_is_shortslot() need to
> > look at a few members.
> > Also remove parentheses around the values being returned from those
> > two functions - 'return' is not a function.
> 
> Also, is there some reason that they are not "static inline bool"
> functions defined directlt in ieee80211.h?
> 
I agree to the bool return type, I should have done that.

the "static inline" and defined in the header bits I didn't do because I 
was afraid that that was not valid in combination with EXPORT_SYMBOL().

-- 
Jesper Juhl <jj@chaosbits.net>       http://www.chaosbits.net/
Don't top-post http://www.catb.org/jargon/html/T/top-post.html
Plain text mails only, please.


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

* Re: [PATCH 1/3] drivers/staging/rtl8187se: Don't pass huge struct by value
  2011-08-14 18:32   ` Jesper Juhl
@ 2011-08-14 23:58     ` Stephen Rothwell
  0 siblings, 0 replies; 4+ messages in thread
From: Stephen Rothwell @ 2011-08-14 23:58 UTC (permalink / raw)
  To: Jesper Juhl
  Cc: Greg Kroah-Hartman, devel, linux-kernel, Andrea Merello,
	Andre Nogueira, Lucas De Marchi, David S. Miller, Larry Finger,
	Stefan Weil, Ilia Mirkin, netdev

[-- Attachment #1: Type: text/plain, Size: 642 bytes --]

Hi Jesper,

On Sun, 14 Aug 2011 20:32:49 +0200 (CEST) Jesper Juhl <jj@chaosbits.net> wrote:
>
> the "static inline" and defined in the header bits I didn't do because I 
> was afraid that that was not valid in combination with EXPORT_SYMBOL().

You don't need to/cannot EXPORT_SYMBOL() static inlines in header files.
Any use in modules will pick up the static inline definition from the
header file when they are built.  Unless, of course, someone takes the
addresses of these functions, then you should not inline them.

-- 
Cheers,
Stephen Rothwell                    sfr@canb.auug.org.au
http://www.canb.auug.org.au/~sfr/

[-- Attachment #2: Type: application/pgp-signature, Size: 490 bytes --]

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

end of thread, other threads:[~2011-08-14 23:58 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-08-12 23:04 [PATCH 1/3] drivers/staging/rtl8187se: Don't pass huge struct by value Jesper Juhl
2011-08-13  8:05 ` Stephen Rothwell
2011-08-14 18:32   ` Jesper Juhl
2011-08-14 23:58     ` Stephen Rothwell

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).