aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/bcmdhd/wl_android.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/wireless/bcmdhd/wl_android.c')
-rw-r--r--drivers/net/wireless/bcmdhd/wl_android.c54
1 files changed, 21 insertions, 33 deletions
diff --git a/drivers/net/wireless/bcmdhd/wl_android.c b/drivers/net/wireless/bcmdhd/wl_android.c
index 0470a9c..00b6969 100644
--- a/drivers/net/wireless/bcmdhd/wl_android.c
+++ b/drivers/net/wireless/bcmdhd/wl_android.c
@@ -21,7 +21,7 @@
* software in any way with any other Broadcom software provided under a license
* other than the GPL, without Broadcom's express prior written consent.
*
- * $Id: wl_android.c 354184 2012-08-30 08:08:08Z $
+ * $Id: wl_android.c 358186 2012-09-21 14:36:14Z $
*/
#include <linux/module.h>
@@ -141,8 +141,6 @@ typedef struct cmd_tlv {
#define CMD_COUNTRYREV_GET "GETCOUNTRYREV"
#endif /* ROAM_API */
-#define CMD_SETROAMMODE "SETROAMMODE"
-
#if defined(CUSTOMER_HW4) && defined(WES_SUPPORT)
#define CMD_GETROAMSCANCONTROL "GETROAMSCANCONTROL"
#define CMD_SETROAMSCANCONTROL "SETROAMSCANCONTROL"
@@ -227,6 +225,10 @@ int wl_cfg80211_set_p2p_ps(struct net_device *net, char* buf, int len)
#endif /* WL_CFG80211 */
extern int dhd_os_check_if_up(void *dhdp);
extern void *bcmsdh_get_drvdata(void);
+#if defined(PROP_TXSTATUS) && !defined(PROP_TXSTATUS_VSDB)
+extern int dhd_wlfc_init(dhd_pub_t *dhd);
+extern void dhd_wlfc_deinit(dhd_pub_t *dhd);
+#endif
#if defined(CUSTOMER_HW4) && defined(WES_SUPPORT)
/* wl_roam.c */
@@ -242,9 +244,7 @@ extern bool ap_fw_loaded;
extern char iface_name[IFNAMSIZ];
#endif
-#ifndef WIFI_TURNOFF_DELAY
#define WIFI_TURNOFF_DELAY 0
-#endif
/**
* Local (static) functions and variables
*/
@@ -1241,6 +1241,9 @@ int wl_android_wifi_on(struct net_device *dev)
if (dhd_dev_init_ioctl(dev) < 0)
ret = -EFAULT;
}
+#if defined(PROP_TXSTATUS) && !defined(PROP_TXSTATUS_VSDB)
+ dhd_wlfc_init(bcmsdh_get_drvdata());
+#endif
g_wifi_on = TRUE;
}
@@ -1262,6 +1265,9 @@ int wl_android_wifi_off(struct net_device *dev)
dhd_net_if_lock(dev);
if (g_wifi_on) {
+#if defined(PROP_TXSTATUS) && !defined(PROP_TXSTATUS_VSDB)
+ dhd_wlfc_deinit(bcmsdh_get_drvdata());
+#endif
ret = dhd_dev_reset(dev, TRUE);
sdioh_stop(NULL);
dhd_customer_gpio_wlan_ctrl(WLAN_RESET_OFF);
@@ -1413,7 +1419,7 @@ wl_android_sta_diassoc(struct net_device *dev, const char* straddr)
bcm_ether_atoe(straddr, &scbval.ea);
DHD_INFO(("%s: deauth STA: "MACDBG "\n", __FUNCTION__,
- STR_TO_MACD(scbval.ea.octet)));
+ MAC2STRDBG(scbval.ea.octet)));
wldev_ioctl(dev, WLC_SCB_DEAUTHENTICATE_FOR_REASON, &scbval,
sizeof(scb_val_t), true);
@@ -1517,29 +1523,6 @@ wl_android_set_ampdu_mpdu(struct net_device *dev, const char* string_num)
}
#endif /* SUPPORT_AMPDU_MPDU_CMD */
-int wl_android_set_roam_mode(struct net_device *dev,
-char *command, int total_len)
-{
- int error = 0;
- int mode = 0;
-
- if (sscanf(command, "%*s %d", &mode) != 1) {
- DHD_ERROR(("wl_android_set_roam_mode:"\
- "Failed to get Parameter\n"));
- return -1;
- }
-
- error = wldev_iovar_setint(dev, "roam_off", mode);
- if (error) {
- DHD_ERROR(("wl_android_set_roam_mode:"\
- "Failed to set roaming Mode %d, error = %d\n", mode, error));
- return -1;
- } else {
- DHD_ERROR(("wl_android_set_roam_mode:"\
- "succeeded to set roaming Mode %d, error = %d\n", mode, error));
- }
- return error;
-}
int wl_android_priv_cmd(struct net_device *net, struct ifreq *ifr, int cmd)
{
#define PRIVATE_COMMAND_MAX_LEN 8192
@@ -1658,7 +1641,16 @@ int wl_android_priv_cmd(struct net_device *net, struct ifreq *ifr, int cmd)
}
else if (strnicmp(command, CMD_SETBAND, strlen(CMD_SETBAND)) == 0) {
uint band = *(command + strlen(CMD_SETBAND) + 1) - '0';
+#ifdef WL_HOST_BAND_MGMT
+ if (wl_cfg80211_set_band(net, band) < 0) {
+ bytes_written = -1;
+ goto exit;
+ }
+ if (band == WLC_BAND_AUTO)
+ bytes_written = wldev_set_band(net, band);
+#else
bytes_written = wldev_set_band(net, band);
+#endif /* WL_HOST_BAND_MGMT */
}
else if (strnicmp(command, CMD_GETBAND, strlen(CMD_GETBAND)) == 0) {
bytes_written = wl_android_get_band(net, command, priv_cmd.total_len);
@@ -1874,10 +1866,6 @@ int wl_android_priv_cmd(struct net_device *net, struct ifreq *ifr, int cmd)
else if (strnicmp(command, CMD_RESTORE_RL, strlen(CMD_RESTORE_RL)) == 0)
bytes_written = wl_android_ch_res_rl(net, false);
#endif /* CUSTOMER_HW4 */
- else if (strnicmp(command, CMD_SETROAMMODE,
- strlen(CMD_SETROAMMODE)) == 0)
- bytes_written = wl_android_set_roam_mode(net,
- command, priv_cmd.total_len);
else {
DHD_ERROR(("Unknown PRIVATE command %s - ignored\n", command));
snprintf(command, 3, "OK");