summaryrefslogtreecommitdiff
path: root/drivers/net/wireless/bcmdhd/wldev_common.c
diff options
context:
space:
mode:
authorDmitry Shmidt <dimitrysh@google.com>2011-06-22 11:06:16 -0700
committerDmitry Shmidt <dimitrysh@google.com>2011-06-22 15:21:58 -0700
commitdad7dc9c39d92af6cb94cc48c66a44dbb668106e (patch)
treec881e3a7741a8ce953b7de40ea72914d5e2f15cd /drivers/net/wireless/bcmdhd/wldev_common.c
parent99e01b39d98cd93ca749cca79272d7eb40cc07b0 (diff)
net: wireless: bcmdhd: Add RSSI and SETSUSPENDOPT private commands
Signed-off-by: Dmitry Shmidt <dimitrysh@google.com>
Diffstat (limited to 'drivers/net/wireless/bcmdhd/wldev_common.c')
-rw-r--r--drivers/net/wireless/bcmdhd/wldev_common.c48
1 files changed, 40 insertions, 8 deletions
diff --git a/drivers/net/wireless/bcmdhd/wldev_common.c b/drivers/net/wireless/bcmdhd/wldev_common.c
index 1afb54c1454c..db2c456965d9 100644
--- a/drivers/net/wireless/bcmdhd/wldev_common.c
+++ b/drivers/net/wireless/bcmdhd/wldev_common.c
@@ -237,18 +237,50 @@ s32 wldev_iovar_getint_bsscfg(
return err;
}
-int
-wldev_get_link_speed(
- struct net_device *dev)
+int wldev_get_link_speed(
+ struct net_device *dev, int *plink_speed)
{
int error;
- int link_speed;
- error = wldev_ioctl(dev, WLC_GET_RATE, &link_speed, sizeof(link_speed), 0);
- if (error < 0)
+ if (!plink_speed)
+ return -ENOMEM;
+ error = wldev_ioctl(dev, WLC_GET_RATE, plink_speed, sizeof(int), 0);
+ if (unlikely(error))
return error;
+
/* Convert internal 500Kbps to Kbps */
- link_speed *= 500;
+ *plink_speed *= 500;
+ return error;
+}
+
+int wldev_get_rssi(
+ struct net_device *dev, int *prssi)
+{
+ scb_val_t scb_val;
+ int error;
+
+ if (!prssi)
+ return -ENOMEM;
+ bzero(&scb_val, sizeof(scb_val_t));
+
+ error = wldev_ioctl(dev, WLC_GET_RSSI, &scb_val, sizeof(scb_val_t), 0);
+ if (unlikely(error))
+ return error;
+
+ *prssi = dtoh32(scb_val.val);
+ return error;
+}
- return link_speed;
+int wldev_get_ssid(
+ struct net_device *dev, wlc_ssid_t *pssid)
+{
+ int error;
+
+ if (!pssid)
+ return -ENOMEM;
+ error = wldev_ioctl(dev, WLC_GET_SSID, pssid, sizeof(wlc_ssid_t), 0);
+ if (unlikely(error))
+ return error;
+ pssid->SSID_len = dtoh32(pssid->SSID_len);
+ return error;
}