linux-wireless.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] libertas: store rssi as an int
@ 2008-03-18 14:15 Holger Schurig
  2008-03-19 14:51 ` Dan Williams
  0 siblings, 1 reply; 7+ messages in thread
From: Holger Schurig @ 2008-03-18 14:15 UTC (permalink / raw)
  To: libertas-dev; +Cc: Dan Williams, linux-wireless, John W. Linville

Don't store an long value in bss_descriptor, but
just an int.

Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>

---

This actually reduces the code size veeeeery slightly.

$ size libertas_old.ko libertas.ko
   text    data     bss     dec     hex filename
 116040    3724       8  119772   1d3dc libertas_old.ko
 116035    3724       8  119767   1d3d7 libertas.ko

Index: wireless-testing/drivers/net/wireless/libertas/scan.h
===================================================================
--- wireless-testing.orig/drivers/net/wireless/libertas/scan.h	
2008-03-18 14:00:34.000000000 +0100
+++ wireless-testing/drivers/net/wireless/libertas/scan.h	
2008-03-18 14:01:22.000000000 +0100
@@ -34,14 +34,9 @@ struct bss_descriptor {
 	u8 ssid_len;
 
 	u16 capability;
-
-	/* receive signal strength in dBm */
-	long rssi;
-
+	int rssi;
 	u32 channel;
-
 	u16 beaconperiod;
-
 	u32 atimwindow;
 
 	/* IW_MODE_AUTO, IW_MODE_ADHOC, IW_MODE_INFRA */
Index: wireless-testing/drivers/net/wireless/libertas/scan.c
===================================================================
--- wireless-testing.orig/drivers/net/wireless/libertas/scan.c	
2008-03-18 14:00:34.000000000 +0100
+++ wireless-testing/drivers/net/wireless/libertas/scan.c	
2008-03-18 14:01:22.000000000 +0100
@@ -602,7 +602,7 @@ static int lbs_scan_networks(struct lbs_
 	lbs_deb_scan("scan table:\n");
 	list_for_each_entry(iter, &priv->network_list, list)
 		lbs_deb_scan("%02d: BSSID %s, RSSI %d, SSID '%s'\n",
-			     i++, print_mac(mac, iter->bssid), (int)iter->rssi,
+			     i++, print_mac(mac, iter->bssid), iter->rssi,
 			     escape_essid(iter->ssid, iter->ssid_len));
 	mutex_unlock(&priv->lock);
 #endif
@@ -948,7 +948,7 @@ struct bss_descriptor *lbs_find_ssid_in_
 					     uint8_t *bssid, uint8_t mode,
 					     int channel)
 {
-	uint8_t bestrssi = 0;
+	int bestrssi = 0;
 	struct bss_descriptor * iter_bss = NULL;
 	struct bss_descriptor * found_bss = NULL;
 	struct bss_descriptor * tmp_oldest = NULL;
Index: wireless-testing/drivers/net/wireless/libertas/debugfs.c
===================================================================
--- wireless-testing.orig/drivers/net/wireless/libertas/debugfs.c	
2008-03-18 14:00:34.000000000 +0100
+++ wireless-testing/drivers/net/wireless/libertas/debugfs.c	
2008-03-18 14:01:22.000000000 +0100
@@ -78,7 +78,7 @@ static ssize_t lbs_getscantable(struct f
 		u16 spectrum_mgmt = (iter_bss->capability & 
WLAN_CAPABILITY_SPECTRUM_MGMT);
 
 		pos += snprintf(buf+pos, len-pos,
-			"%02u| %03d | %04ld | %s |",
+			"%02u| %03d | %04d | %s |",
 			numscansdone, iter_bss->channel, iter_bss->rssi,
 			print_mac(mac, iter_bss->bssid));
 		pos += snprintf(buf+pos, len-pos, " %04x-", 
iter_bss->capability);

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

* Re: [PATCH] libertas: store rssi as an int
  2008-03-18 14:15 [PATCH] libertas: store rssi as an int Holger Schurig
@ 2008-03-19 14:51 ` Dan Williams
  2008-03-19 15:20   ` Holger Schurig
  0 siblings, 1 reply; 7+ messages in thread
From: Dan Williams @ 2008-03-19 14:51 UTC (permalink / raw)
  To: Holger Schurig; +Cc: libertas-dev, linux-wireless, John W. Linville

On Tue, 2008-03-18 at 15:15 +0100, Holger Schurig wrote:
> Don't store an long value in bss_descriptor, but
> just an int.

RSSI as defined in 802.11 as a positive 8-bit value; the libertas
firmware also reports the RSSI in scan results as a u8.  So I'd suggest
a u8 instead of an int; an int isn't the right thing to do here.

Dan


> Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>
> 
> ---
> 
> This actually reduces the code size veeeeery slightly.
> 
> $ size libertas_old.ko libertas.ko
>    text    data     bss     dec     hex filename
>  116040    3724       8  119772   1d3dc libertas_old.ko
>  116035    3724       8  119767   1d3d7 libertas.ko
> 
> Index: wireless-testing/drivers/net/wireless/libertas/scan.h
> ===================================================================
> --- wireless-testing.orig/drivers/net/wireless/libertas/scan.h	
> 2008-03-18 14:00:34.000000000 +0100
> +++ wireless-testing/drivers/net/wireless/libertas/scan.h	
> 2008-03-18 14:01:22.000000000 +0100
> @@ -34,14 +34,9 @@ struct bss_descriptor {
>  	u8 ssid_len;
>  
>  	u16 capability;
> -
> -	/* receive signal strength in dBm */
> -	long rssi;
> -
> +	int rssi;
>  	u32 channel;
> -
>  	u16 beaconperiod;
> -
>  	u32 atimwindow;
>  
>  	/* IW_MODE_AUTO, IW_MODE_ADHOC, IW_MODE_INFRA */
> Index: wireless-testing/drivers/net/wireless/libertas/scan.c
> ===================================================================
> --- wireless-testing.orig/drivers/net/wireless/libertas/scan.c	
> 2008-03-18 14:00:34.000000000 +0100
> +++ wireless-testing/drivers/net/wireless/libertas/scan.c	
> 2008-03-18 14:01:22.000000000 +0100
> @@ -602,7 +602,7 @@ static int lbs_scan_networks(struct lbs_
>  	lbs_deb_scan("scan table:\n");
>  	list_for_each_entry(iter, &priv->network_list, list)
>  		lbs_deb_scan("%02d: BSSID %s, RSSI %d, SSID '%s'\n",
> -			     i++, print_mac(mac, iter->bssid), (int)iter->rssi,
> +			     i++, print_mac(mac, iter->bssid), iter->rssi,
>  			     escape_essid(iter->ssid, iter->ssid_len));
>  	mutex_unlock(&priv->lock);
>  #endif
> @@ -948,7 +948,7 @@ struct bss_descriptor *lbs_find_ssid_in_
>  					     uint8_t *bssid, uint8_t mode,
>  					     int channel)
>  {
> -	uint8_t bestrssi = 0;
> +	int bestrssi = 0;
>  	struct bss_descriptor * iter_bss = NULL;
>  	struct bss_descriptor * found_bss = NULL;
>  	struct bss_descriptor * tmp_oldest = NULL;
> Index: wireless-testing/drivers/net/wireless/libertas/debugfs.c
> ===================================================================
> --- wireless-testing.orig/drivers/net/wireless/libertas/debugfs.c	
> 2008-03-18 14:00:34.000000000 +0100
> +++ wireless-testing/drivers/net/wireless/libertas/debugfs.c	
> 2008-03-18 14:01:22.000000000 +0100
> @@ -78,7 +78,7 @@ static ssize_t lbs_getscantable(struct f
>  		u16 spectrum_mgmt = (iter_bss->capability & 
> WLAN_CAPABILITY_SPECTRUM_MGMT);
>  
>  		pos += snprintf(buf+pos, len-pos,
> -			"%02u| %03d | %04ld | %s |",
> +			"%02u| %03d | %04d | %s |",
>  			numscansdone, iter_bss->channel, iter_bss->rssi,
>  			print_mac(mac, iter_bss->bssid));
>  		pos += snprintf(buf+pos, len-pos, " %04x-", 
> iter_bss->capability);


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

* Re: [PATCH] libertas: store rssi as an int
  2008-03-19 14:51 ` Dan Williams
@ 2008-03-19 15:20   ` Holger Schurig
  2008-03-19 15:39     ` Dan Williams
  0 siblings, 1 reply; 7+ messages in thread
From: Holger Schurig @ 2008-03-19 15:20 UTC (permalink / raw)
  To: Dan Williams; +Cc: linux-wireless, John W. Linville

> RSSI as defined in 802.11 as a positive 8-bit value; the
> libertas firmware also reports the RSSI in scan results as a
> u8.  So I'd suggest a u8 instead of an int; an int isn't the
> right thing to do here.

"struct bss_descriptor" has nothing to do with hardware, 
otherwise you would see __le32 there. Using an "u8" saves us 
nothing, except we move all u8's at the end of the struct. But 
this would give us unaligned u8's and some processors have 
problems with that.

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

* Re: [PATCH] libertas: store rssi as an int
  2008-03-19 15:20   ` Holger Schurig
@ 2008-03-19 15:39     ` Dan Williams
  2008-03-19 16:07       ` Holger Schurig
  2008-03-19 16:08       ` [PATCH, take 2] libertas: store rssi as an u32 Holger Schurig
  0 siblings, 2 replies; 7+ messages in thread
From: Dan Williams @ 2008-03-19 15:39 UTC (permalink / raw)
  To: Holger Schurig; +Cc: linux-wireless, John W. Linville

On Wed, 2008-03-19 at 16:20 +0100, Holger Schurig wrote:
> > RSSI as defined in 802.11 as a positive 8-bit value; the
> > libertas firmware also reports the RSSI in scan results as a
> > u8.  So I'd suggest a u8 instead of an int; an int isn't the
> > right thing to do here.
> 
> "struct bss_descriptor" has nothing to do with hardware, 
> otherwise you would see __le32 there. Using an "u8" saves us 
> nothing, except we move all u8's at the end of the struct. But 
> this would give us unaligned u8's and some processors have 
> problems with that.

I still don't want an int used for a value that should never be
unsigned...  I don't particularly care what size it is as long as its
unsigned.  Otherwise, we should be calling it RSSI at all.  Either it's
unsigned+RSSI or signed+dBm, but in the signed+dBm case we'd have to
actually _convert_ it to dBm too.

Dan


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

* Re: [PATCH] libertas: store rssi as an int
  2008-03-19 15:39     ` Dan Williams
@ 2008-03-19 16:07       ` Holger Schurig
  2008-03-19 16:08       ` [PATCH, take 2] libertas: store rssi as an u32 Holger Schurig
  1 sibling, 0 replies; 7+ messages in thread
From: Holger Schurig @ 2008-03-19 16:07 UTC (permalink / raw)
  To: Dan Williams; +Cc: linux-wireless, John W. Linville

> I still don't want an int used for a value that should never
> be unsigned...

okay, "unsigned int" then :-)   I'm just glad that "long" was as
signedness as "int" ...

I'm just making a "take" for this.

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

* Re: [PATCH, take 2] libertas: store rssi as an u32
  2008-03-19 15:39     ` Dan Williams
  2008-03-19 16:07       ` Holger Schurig
@ 2008-03-19 16:08       ` Holger Schurig
  2008-03-19 22:17         ` Dan Williams
  1 sibling, 1 reply; 7+ messages in thread
From: Holger Schurig @ 2008-03-19 16:08 UTC (permalink / raw)
  To: Dan Williams; +Cc: linux-wireless, John W. Linville, libertas-dev

[PATCH] store rssi as an int

Don't store an (hardware base) u8 value in bss_descriptor, but just an
unsigned int (RSSI is really unsigned). Compilers generate more efficent
code for ints than for bytes.

Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>

Index: wireless-testing/drivers/net/wireless/libertas/scan.h
===================================================================
--- wireless-testing.orig/drivers/net/wireless/libertas/scan.h	2008-03-19 09:04:43.000000000 +0100
+++ wireless-testing/drivers/net/wireless/libertas/scan.h	2008-03-19 09:05:53.000000000 +0100
@@ -34,14 +34,9 @@ struct bss_descriptor {
 	u8 ssid_len;
 
 	u16 capability;
-
-	/* receive signal strength in dBm */
-	long rssi;
-
+	u32 rssi;
 	u32 channel;
-
 	u16 beaconperiod;
-
 	u32 atimwindow;
 
 	/* IW_MODE_AUTO, IW_MODE_ADHOC, IW_MODE_INFRA */
Index: wireless-testing/drivers/net/wireless/libertas/scan.c
===================================================================
--- wireless-testing.orig/drivers/net/wireless/libertas/scan.c	2008-03-19 09:05:48.000000000 +0100
+++ wireless-testing/drivers/net/wireless/libertas/scan.c	2008-03-19 09:27:55.000000000 +0100
@@ -602,7 +602,7 @@ static int lbs_scan_networks(struct lbs_
 	lbs_deb_scan("scan table:\n");
 	list_for_each_entry(iter, &priv->network_list, list)
 		lbs_deb_scan("%02d: BSSID %s, RSSI %d, SSID '%s'\n",
-			     i++, print_mac(mac, iter->bssid), (int)iter->rssi,
+			     i++, print_mac(mac, iter->bssid), iter->rssi,
 			     escape_essid(iter->ssid, iter->ssid_len));
 	mutex_unlock(&priv->lock);
 #endif
@@ -948,7 +948,7 @@ struct bss_descriptor *lbs_find_ssid_in_
 					     uint8_t *bssid, uint8_t mode,
 					     int channel)
 {
-	uint8_t bestrssi = 0;
+	u32 bestrssi = 0;
 	struct bss_descriptor * iter_bss = NULL;
 	struct bss_descriptor * found_bss = NULL;
 	struct bss_descriptor * tmp_oldest = NULL;
Index: wireless-testing/drivers/net/wireless/libertas/debugfs.c
===================================================================
--- wireless-testing.orig/drivers/net/wireless/libertas/debugfs.c	2008-03-19 09:04:43.000000000 +0100
+++ wireless-testing/drivers/net/wireless/libertas/debugfs.c	2008-03-19 09:05:53.000000000 +0100
@@ -78,7 +78,7 @@ static ssize_t lbs_getscantable(struct f
 		u16 spectrum_mgmt = (iter_bss->capability & WLAN_CAPABILITY_SPECTRUM_MGMT);
 
 		pos += snprintf(buf+pos, len-pos,
-			"%02u| %03d | %04ld | %s |",
+			"%02u| %03d | %04d | %s |",
 			numscansdone, iter_bss->channel, iter_bss->rssi,
 			print_mac(mac, iter_bss->bssid));
 		pos += snprintf(buf+pos, len-pos, " %04x-", iter_bss->capability);

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

* Re: [PATCH, take 2] libertas: store rssi as an u32
  2008-03-19 16:08       ` [PATCH, take 2] libertas: store rssi as an u32 Holger Schurig
@ 2008-03-19 22:17         ` Dan Williams
  0 siblings, 0 replies; 7+ messages in thread
From: Dan Williams @ 2008-03-19 22:17 UTC (permalink / raw)
  To: Holger Schurig; +Cc: linux-wireless, John W. Linville, libertas-dev

On Wed, 2008-03-19 at 17:08 +0100, Holger Schurig wrote:
> [PATCH] store rssi as an int
> 
> Don't store an (hardware base) u8 value in bss_descriptor, but just an
> unsigned int (RSSI is really unsigned). Compilers generate more efficent
> code for ints than for bytes.
> 
> Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>

Acked-by: Dan Williams <dcbw@redhat.com>

> Index: wireless-testing/drivers/net/wireless/libertas/scan.h
> ===================================================================
> --- wireless-testing.orig/drivers/net/wireless/libertas/scan.h	2008-03-19 09:04:43.000000000 +0100
> +++ wireless-testing/drivers/net/wireless/libertas/scan.h	2008-03-19 09:05:53.000000000 +0100
> @@ -34,14 +34,9 @@ struct bss_descriptor {
>  	u8 ssid_len;
>  
>  	u16 capability;
> -
> -	/* receive signal strength in dBm */
> -	long rssi;
> -
> +	u32 rssi;
>  	u32 channel;
> -
>  	u16 beaconperiod;
> -
>  	u32 atimwindow;
>  
>  	/* IW_MODE_AUTO, IW_MODE_ADHOC, IW_MODE_INFRA */
> Index: wireless-testing/drivers/net/wireless/libertas/scan.c
> ===================================================================
> --- wireless-testing.orig/drivers/net/wireless/libertas/scan.c	2008-03-19 09:05:48.000000000 +0100
> +++ wireless-testing/drivers/net/wireless/libertas/scan.c	2008-03-19 09:27:55.000000000 +0100
> @@ -602,7 +602,7 @@ static int lbs_scan_networks(struct lbs_
>  	lbs_deb_scan("scan table:\n");
>  	list_for_each_entry(iter, &priv->network_list, list)
>  		lbs_deb_scan("%02d: BSSID %s, RSSI %d, SSID '%s'\n",
> -			     i++, print_mac(mac, iter->bssid), (int)iter->rssi,
> +			     i++, print_mac(mac, iter->bssid), iter->rssi,
>  			     escape_essid(iter->ssid, iter->ssid_len));
>  	mutex_unlock(&priv->lock);
>  #endif
> @@ -948,7 +948,7 @@ struct bss_descriptor *lbs_find_ssid_in_
>  					     uint8_t *bssid, uint8_t mode,
>  					     int channel)
>  {
> -	uint8_t bestrssi = 0;
> +	u32 bestrssi = 0;
>  	struct bss_descriptor * iter_bss = NULL;
>  	struct bss_descriptor * found_bss = NULL;
>  	struct bss_descriptor * tmp_oldest = NULL;
> Index: wireless-testing/drivers/net/wireless/libertas/debugfs.c
> ===================================================================
> --- wireless-testing.orig/drivers/net/wireless/libertas/debugfs.c	2008-03-19 09:04:43.000000000 +0100
> +++ wireless-testing/drivers/net/wireless/libertas/debugfs.c	2008-03-19 09:05:53.000000000 +0100
> @@ -78,7 +78,7 @@ static ssize_t lbs_getscantable(struct f
>  		u16 spectrum_mgmt = (iter_bss->capability & WLAN_CAPABILITY_SPECTRUM_MGMT);
>  
>  		pos += snprintf(buf+pos, len-pos,
> -			"%02u| %03d | %04ld | %s |",
> +			"%02u| %03d | %04d | %s |",
>  			numscansdone, iter_bss->channel, iter_bss->rssi,
>  			print_mac(mac, iter_bss->bssid));
>  		pos += snprintf(buf+pos, len-pos, " %04x-", iter_bss->capability);


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

end of thread, other threads:[~2008-03-19 22:19 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-03-18 14:15 [PATCH] libertas: store rssi as an int Holger Schurig
2008-03-19 14:51 ` Dan Williams
2008-03-19 15:20   ` Holger Schurig
2008-03-19 15:39     ` Dan Williams
2008-03-19 16:07       ` Holger Schurig
2008-03-19 16:08       ` [PATCH, take 2] libertas: store rssi as an u32 Holger Schurig
2008-03-19 22:17         ` Dan Williams

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