diff options
author | Dmitry Shmidt <dimitrysh@google.com> | 2011-06-22 11:06:16 -0700 |
---|---|---|
committer | Dmitry Shmidt <dimitrysh@google.com> | 2011-06-22 15:21:58 -0700 |
commit | dad7dc9c39d92af6cb94cc48c66a44dbb668106e (patch) | |
tree | c881e3a7741a8ce953b7de40ea72914d5e2f15cd /drivers/net/wireless/bcmdhd/wldev_common.c | |
parent | 99e01b39d98cd93ca749cca79272d7eb40cc07b0 (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.c | 48 |
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; } |