summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNarayan Reddy <narayanr@nvidia.com>2014-02-27 15:24:49 +0530
committerRiham Haidar <rhaidar@nvidia.com>2014-03-07 16:16:15 -0800
commit6fb6e2f1979c8eb265b947d9fc6cfbd380eee74d (patch)
treed53b753f7f0567420a13f024ed3189a397f990c4
parentc70ca35ead96722aab3a35e3b0d2bb0374f0c328 (diff)
Revert "net: wireless: bcmdhd: update driver to version 1.88.58"
This reverts commit 1282e9ee337d735b3c66425230d48ebb8c6573a5. Wi-Fi batching and TDLS driver drop fails P2P-Wi-Fi concurrent connection. Reverting the driver until we get a proper fix from BRCM team. Bug 1456379 Bug 1462395 Change-Id: I96c9b17ac7558ded2baa8b1342f4962cef1471a6 Signed-off-by: Narayan Reddy <narayanr@nvidia.com> Reviewed-on: http://git-master/r/375425 GVS: Gerrit_Virtual_Submit Reviewed-by: Kyeong Kim <kyeongk@nvidia.com> Reviewed-by: Bharat Nihalani <bnihalani@nvidia.com>
-rw-r--r--drivers/net/wireless/bcmdhd/Makefile4
-rwxr-xr-xdrivers/net/wireless/bcmdhd/bcmsdh_sdmmc.c3
-rwxr-xr-xdrivers/net/wireless/bcmdhd/bcmutils.c2
-rwxr-xr-xdrivers/net/wireless/bcmdhd/dhd.h14
-rwxr-xr-xdrivers/net/wireless/bcmdhd/dhd_cdc.c2
-rwxr-xr-xdrivers/net/wireless/bcmdhd/dhd_common.c29
-rwxr-xr-xdrivers/net/wireless/bcmdhd/dhd_linux.c149
-rwxr-xr-xdrivers/net/wireless/bcmdhd/dhd_pno.c28
-rwxr-xr-xdrivers/net/wireless/bcmdhd/dhd_sdio.c114
-rwxr-xr-xdrivers/net/wireless/bcmdhd/include/bcmutils.h4
-rwxr-xr-xdrivers/net/wireless/bcmdhd/include/epivers.h14
-rwxr-xr-xdrivers/net/wireless/bcmdhd/include/proto/ethernet.h4
-rwxr-xr-xdrivers/net/wireless/bcmdhd/include/wlioctl.h4
-rwxr-xr-xdrivers/net/wireless/bcmdhd/siutils.c2
-rwxr-xr-xdrivers/net/wireless/bcmdhd/wl_android.c2
-rwxr-xr-xdrivers/net/wireless/bcmdhd/wl_cfg80211.c57
-rwxr-xr-xdrivers/net/wireless/bcmdhd/wldev_common.c2
17 files changed, 125 insertions, 309 deletions
diff --git a/drivers/net/wireless/bcmdhd/Makefile b/drivers/net/wireless/bcmdhd/Makefile
index 24e319e9001e..7127f03663ad 100644
--- a/drivers/net/wireless/bcmdhd/Makefile
+++ b/drivers/net/wireless/bcmdhd/Makefile
@@ -8,7 +8,7 @@ DHDCFLAGS = -Wall -Wstrict-prototypes -Dlinux -DBCMDRIVER \
-DMMC_SDIO_ABORT -DBCMSDIO -DBCMLXSDMMC -DBCMPLATFORM_BUS -DWLP2P \
-DWIFI_ACT_FRAME -DARP_OFFLOAD_SUPPORT \
-DKEEP_ALIVE -DGET_CUSTOM_MAC_ENABLE -DPKT_FILTER_SUPPORT \
- -DEMBEDDED_PLATFORM -DPNO_SUPPORT -DWLTDLS \
+ -DEMBEDDED_PLATFORM -DPNO_SUPPORT \
-DDHD_USE_IDLECOUNT -DSET_RANDOM_MAC_SOFTAP -DROAM_ENABLE -DVSDB \
-DWL_CFG80211_VSDB_PRIORITIZE_SCAN_REQUEST \
-DESCAN_RESULT_PATCH -DHT40_GO -DPASS_ARP_PACKET \
@@ -55,7 +55,7 @@ endif
ifeq ($(CONFIG_BCMDHD),y)
DHDCFLAGS += -DBCM43241_CHIP
- DHDCFLAGS += -DUSE_SDIOFIFO_IOVAR
+ DHDCFLAGS += -DSDIO_CRC_ERROR_FIX
DHDCFLAGS += -DCUSTOM_SDIO_F2_BLKSIZE=128
DHDCFLAGS += -DCUSTOM_ROAM_TRIGGER_SETTING=-65
DHDCFLAGS += -DCUSTOM_ROAM_DELTA_SETTING=15
diff --git a/drivers/net/wireless/bcmdhd/bcmsdh_sdmmc.c b/drivers/net/wireless/bcmdhd/bcmsdh_sdmmc.c
index bb56b0eeeb7a..1f9c08b0b4fb 100755
--- a/drivers/net/wireless/bcmdhd/bcmsdh_sdmmc.c
+++ b/drivers/net/wireless/bcmdhd/bcmsdh_sdmmc.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: bcmsdh_sdmmc.c 439169 2013-11-25 23:36:15Z $
+ * $Id: bcmsdh_sdmmc.c 427054 2013-10-02 03:38:35Z $
*/
#include <typedefs.h>
@@ -1267,7 +1267,6 @@ txglomfail:
return SDIOH_API_RC_FAIL;
}
}
- pkt_len += pad;
}
}
diff --git a/drivers/net/wireless/bcmdhd/bcmutils.c b/drivers/net/wireless/bcmdhd/bcmutils.c
index aa5971476290..a991b0cfc59b 100755
--- a/drivers/net/wireless/bcmdhd/bcmutils.c
+++ b/drivers/net/wireless/bcmdhd/bcmutils.c
@@ -2303,7 +2303,7 @@ bcm_uint64_divide(uint32* r, uint32 a_high, uint32 a_low, uint32 b)
*r = r0;
}
-#ifndef setbit /* As in the header file */
+#ifndef setbit /* As in the header file */
#ifdef BCMUTILS_BIT_MACROS_USE_FUNCS
/* Set bit in byte array. */
void
diff --git a/drivers/net/wireless/bcmdhd/dhd.h b/drivers/net/wireless/bcmdhd/dhd.h
index af014ba4affa..dcadf017ea61 100755
--- a/drivers/net/wireless/bcmdhd/dhd.h
+++ b/drivers/net/wireless/bcmdhd/dhd.h
@@ -24,7 +24,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: dhd.h 439234 2013-11-26 02:04:53Z $
+ * $Id: dhd.h 432432 2013-10-28 15:52:47Z $
*/
/****************
@@ -417,7 +417,6 @@ extern int dhd_os_wake_unlock(dhd_pub_t *pub);
extern int dhd_os_wake_lock_timeout(dhd_pub_t *pub);
extern int dhd_os_wake_lock_rx_timeout_enable(dhd_pub_t *pub, int val);
extern int dhd_os_wake_lock_ctrl_timeout_enable(dhd_pub_t *pub, int val);
-extern int dhd_os_wake_lock_ctrl_timeout_cancel(dhd_pub_t *pub);
extern int dhd_os_wd_wake_lock(dhd_pub_t *pub);
extern int dhd_os_wd_wake_unlock(dhd_pub_t *pub);
@@ -451,8 +450,6 @@ inline static void MUTEX_UNLOCK_SOFTAP_SET(dhd_pub_t * dhdp)
dhd_os_wake_lock_rx_timeout_enable(pub, val)
#define DHD_OS_WAKE_LOCK_CTRL_TIMEOUT_ENABLE(pub, val) \
dhd_os_wake_lock_ctrl_timeout_enable(pub, val)
-#define DHD_OS_WAKE_LOCK_CTRL_TIMEOUT_CANCEL(pub) \
- dhd_os_wake_lock_ctrl_timeout_cancel(pub)
#define DHD_PACKET_TIMEOUT_MS 500
#define DHD_EVENT_TIMEOUT_MS 1500
@@ -804,11 +801,8 @@ extern uint dhd_force_tx_queueing;
#endif /* WLTDLS */
-#define MAX_DTIM_SKIP_BEACON_INTERVAL 100 /* max allowed associated AP beacon for DTIM skip */
-#ifndef MAX_DTIM_ALLOWED_INTERVAL
-#define MAX_DTIM_ALLOWED_INTERVAL 600 /* max allowed total beacon interval for DTIM skip */
-#endif
-#define NO_DTIM_SKIP 1
+#define MAX_DTIM_SKIP_BEACON_ITERVAL 100 /* max allowed associated AP beacon for dtim skip */
+
#ifdef SDTEST
/* Echo packet generator (SDIO), pkts/s */
extern uint dhd_pktgen;
@@ -1007,7 +1001,7 @@ int dhd_arp_get_arp_hostip_table(dhd_pub_t *dhd, void *buf, int buflen, int idx)
void dhd_arp_offload_add_ip(dhd_pub_t *dhd, uint32 ipaddr, int idx);
#endif /* ARP_OFFLOAD_SUPPORT */
#ifdef WLTDLS
-int dhd_tdls_enable(struct net_device *dev, bool tdls_on, bool auto_on, struct ether_addr *mac);
+int dhd_tdls_enable_disable(dhd_pub_t *dhd, bool flag);
#endif
/* Neighbor Discovery Offload Support */
int dhd_ndo_enable(dhd_pub_t * dhd, int ndo_enable);
diff --git a/drivers/net/wireless/bcmdhd/dhd_cdc.c b/drivers/net/wireless/bcmdhd/dhd_cdc.c
index abe98196def7..056175c908b5 100755
--- a/drivers/net/wireless/bcmdhd/dhd_cdc.c
+++ b/drivers/net/wireless/bcmdhd/dhd_cdc.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: dhd_cdc.c 434146 2013-11-05 13:06:16Z $
+ * $Id: dhd_cdc.c 424024 2013-09-15 14:00:46Z $
*
* BDC is like CDC, except it includes a header for data packets to convey
* packet priority over the bus, and flags (e.g. to indicate checksum status
diff --git a/drivers/net/wireless/bcmdhd/dhd_common.c b/drivers/net/wireless/bcmdhd/dhd_common.c
index 84519c38ec0a..62c924c9cdaa 100755
--- a/drivers/net/wireless/bcmdhd/dhd_common.c
+++ b/drivers/net/wireless/bcmdhd/dhd_common.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: dhd_common.c 439201 2013-11-26 00:31:53Z $
+ * $Id: dhd_common.c 419132 2013-08-19 21:33:05Z $
*/
#include <typedefs.h>
#include <osl.h>
@@ -1886,9 +1886,9 @@ dhd_get_suspend_bcn_li_dtim(dhd_pub_t *dhd)
{
int bcn_li_dtim = 1; /* deafult no dtim skip setting */
int ret = -1;
- int dtim_period = 0;
+ int dtim_assoc = 0;
int ap_beacon = 0;
- int allowed_skip_dtim_cnt = 0;
+
/* Check if associated */
if (dhd_is_associated(dhd, NULL, NULL) == FALSE) {
DHD_TRACE(("%s NOT assoc ret %d\n", __FUNCTION__, ret));
@@ -1903,20 +1903,20 @@ dhd_get_suspend_bcn_li_dtim(dhd_pub_t *dhd)
}
/* if associated APs Beacon more that 100msec do no dtim skip */
- if (ap_beacon > MAX_DTIM_SKIP_BEACON_INTERVAL) {
+ if (ap_beacon > MAX_DTIM_SKIP_BEACON_ITERVAL) {
DHD_ERROR(("%s NO dtim skip for AP with beacon %d ms\n", __FUNCTION__, ap_beacon));
goto exit;
}
/* read associated ap's dtim setup */
if ((ret = dhd_wl_ioctl_cmd(dhd, WLC_GET_DTIMPRD,
- &dtim_period, sizeof(dtim_period), FALSE, 0)) < 0) {
+ &dtim_assoc, sizeof(dtim_assoc), FALSE, 0)) < 0) {
DHD_ERROR(("%s failed code %d\n", __FUNCTION__, ret));
goto exit;
}
/* if not assocated just eixt */
- if (dtim_period == 0) {
+ if (dtim_assoc == 0) {
goto exit;
}
@@ -1924,27 +1924,22 @@ dhd_get_suspend_bcn_li_dtim(dhd_pub_t *dhd)
bcn_li_dtim = dhd->suspend_bcn_li_dtim;
/* check if sta listen interval fits into AP dtim */
- if (dtim_period > CUSTOM_LISTEN_INTERVAL) {
+ if (dtim_assoc > CUSTOM_LISTEN_INTERVAL) {
/* AP DTIM to big for our Listen Interval : no dtim skiping */
- bcn_li_dtim = NO_DTIM_SKIP;
+ bcn_li_dtim = 1;
DHD_ERROR(("%s DTIM=%d > Listen=%d : too big ...\n",
- __FUNCTION__, dtim_period, CUSTOM_LISTEN_INTERVAL));
+ __FUNCTION__, dtim_assoc, CUSTOM_LISTEN_INTERVAL));
goto exit;
}
- if ((dtim_period * ap_beacon * bcn_li_dtim) > MAX_DTIM_ALLOWED_INTERVAL) {
- allowed_skip_dtim_cnt = MAX_DTIM_ALLOWED_INTERVAL / (dtim_period * ap_beacon);
- bcn_li_dtim = (allowed_skip_dtim_cnt != 0) ? allowed_skip_dtim_cnt : NO_DTIM_SKIP;
- }
-
- if ((bcn_li_dtim * dtim_period) > CUSTOM_LISTEN_INTERVAL) {
+ if ((bcn_li_dtim * dtim_assoc) > CUSTOM_LISTEN_INTERVAL) {
/* Round up dtim_skip to fit into STAs Listen Interval */
- bcn_li_dtim = (int)(CUSTOM_LISTEN_INTERVAL / dtim_period);
+ bcn_li_dtim = (int)(CUSTOM_LISTEN_INTERVAL / dtim_assoc);
DHD_TRACE(("%s agjust dtim_skip as %d\n", __FUNCTION__, bcn_li_dtim));
}
DHD_ERROR(("%s beacon=%d bcn_li_dtim=%d DTIM=%d Listen=%d\n",
- __FUNCTION__, ap_beacon, bcn_li_dtim, dtim_period, CUSTOM_LISTEN_INTERVAL));
+ __FUNCTION__, ap_beacon, bcn_li_dtim, dtim_assoc, CUSTOM_LISTEN_INTERVAL));
exit:
return bcn_li_dtim;
diff --git a/drivers/net/wireless/bcmdhd/dhd_linux.c b/drivers/net/wireless/bcmdhd/dhd_linux.c
index 052e041ee68e..83d7bb3879f6 100755
--- a/drivers/net/wireless/bcmdhd/dhd_linux.c
+++ b/drivers/net/wireless/bcmdhd/dhd_linux.c
@@ -22,7 +22,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: dhd_linux.c 440335 2013-12-02 09:33:45Z $
+ * $Id: dhd_linux.c 432432 2013-10-28 15:52:47Z $
*/
#include <typedefs.h>
@@ -218,17 +218,6 @@ extern int dhd_write_macaddr(struct ether_addr *mac);
#else
static inline int dhd_write_macaddr(struct ether_addr *mac) { return 0; }
#endif
-
-#ifdef CUSTOMER_HW10
-extern int dhd_preinit_config(dhd_pub_t *dhd, int ifidx);
-#endif /* CUSTOMER_HW10 */
-
-
-#if defined(SOFTAP_TPUT_ENHANCE)
-extern void dhd_bus_setidletime(dhd_pub_t *dhdp, int idle_time);
-extern void dhd_bus_getidletime(dhd_pub_t *dhdp, int* idle_time);
-#endif /* SOFTAP_TPUT_ENHANCE */
-
struct ipv6_addr {
char ipv6_addr[IPV6_ADDR_LEN];
dhd_ipv6_op_t ipv6_oper;
@@ -945,8 +934,6 @@ static int dhd_set_suspend(int value, dhd_pub_t *dhd)
#ifndef ENABLE_FW_ROAM_SUSPEND
uint roamvar = 1;
#endif /* ENABLE_FW_ROAM_SUSPEND */
- uint nd_ra_filter = 0;
- int ret = 0;
if (!dhd)
return -ENODEV;
@@ -989,16 +976,6 @@ static int dhd_set_suspend(int value, dhd_pub_t *dhd)
iovbuf, sizeof(iovbuf));
dhd_wl_ioctl_cmd(dhd, WLC_SET_VAR, iovbuf, sizeof(iovbuf), TRUE, 0);
#endif /* ENABLE_FW_ROAM_SUSPEND */
- if (FW_SUPPORTED(dhd, ndoe)) {
- /* enable IPv6 RA filter in firmware during suspend */
- nd_ra_filter = 1;
- bcm_mkiovar("nd_ra_filter_enable", (char *)&nd_ra_filter, 4,
- iovbuf, sizeof(iovbuf));
- if ((ret = dhd_wl_ioctl_cmd(dhd, WLC_SET_VAR, iovbuf,
- sizeof(iovbuf), TRUE, 0)) < 0)
- DHD_ERROR(("failed to set nd_ra_filter (%d)\n",
- ret));
- }
} else {
#ifdef PKT_FILTER_SUPPORT
dhd->early_suspended = 0;
@@ -1027,16 +1004,6 @@ static int dhd_set_suspend(int value, dhd_pub_t *dhd)
sizeof(iovbuf));
dhd_wl_ioctl_cmd(dhd, WLC_SET_VAR, iovbuf, sizeof(iovbuf), TRUE, 0);
#endif /* ENABLE_FW_ROAM_SUSPEND */
- if (FW_SUPPORTED(dhd, ndoe)) {
- /* disable IPv6 RA filter in firmware during suspend */
- nd_ra_filter = 0;
- bcm_mkiovar("nd_ra_filter_enable", (char *)&nd_ra_filter, 4,
- iovbuf, sizeof(iovbuf));
- if ((ret = dhd_wl_ioctl_cmd(dhd, WLC_SET_VAR, iovbuf,
- sizeof(iovbuf), TRUE, 0)) < 0)
- DHD_ERROR(("failed to set nd_ra_filter (%d)\n",
- ret));
- }
}
}
dhd_suspend_unlock(dhd);
@@ -3786,73 +3753,43 @@ dhd_bus_start(dhd_pub_t *dhdp)
return 0;
}
#ifdef WLTDLS
-int _dhd_tdls_enable(dhd_pub_t *dhd, bool tdls_on, bool auto_on, struct ether_addr *mac)
+int dhd_tdls_enable_disable(dhd_pub_t *dhd, bool flag)
{
char iovbuf[WLC_IOCTL_SMLEN];
- uint32 tdls = tdls_on;
- int ret = 0;
- uint32 tdls_auto_op = 0;
+ uint32 tdls = flag;
+ int ret;
+#ifdef WLTDLS_AUTO_ENABLE
+ uint32 tdls_auto_op = 1;
uint32 tdls_idle_time = CUSTOM_TDLS_IDLE_MODE_SETTING;
- int32 tdls_rssi_high = CUSTOM_TDLS_RSSI_THRESHOLD_HIGH;
- int32 tdls_rssi_low = CUSTOM_TDLS_RSSI_THRESHOLD_LOW;
- BCM_REFERENCE(mac);
+#endif /* WLTDLS_AUTO_ENABLE */
if (!FW_SUPPORTED(dhd, tdls))
return BCME_ERROR;
- if (dhd->tdls_enable == tdls_on)
- goto auto_mode;
bcm_mkiovar("tdls_enable", (char *)&tdls, sizeof(tdls), iovbuf, sizeof(iovbuf));
if ((ret = dhd_wl_ioctl_cmd(dhd, WLC_SET_VAR, iovbuf, sizeof(iovbuf), TRUE, 0)) < 0) {
DHD_ERROR(("%s: tdls %d failed %d\n", __FUNCTION__, tdls, ret));
goto exit;
}
- dhd->tdls_enable = tdls_on;
-auto_mode:
-
- tdls_auto_op = auto_on;
+ dhd->tdls_enable = flag;
+ if (!flag)
+ goto exit;
+#ifdef WLTDLS_AUTO_ENABLE
bcm_mkiovar("tdls_auto_op", (char *)&tdls_auto_op, sizeof(tdls_auto_op),
iovbuf, sizeof(iovbuf));
- if ((ret = dhd_wl_ioctl_cmd(dhd, WLC_SET_VAR, iovbuf,
- sizeof(iovbuf), TRUE, 0)) < 0) {
+ if ((ret = dhd_wl_ioctl_cmd(dhd, WLC_SET_VAR, iovbuf, sizeof(iovbuf), TRUE, 0)) < 0) {
DHD_ERROR(("%s: tdls_auto_op failed %d\n", __FUNCTION__, ret));
goto exit;
}
-
- if (tdls_auto_op) {
- bcm_mkiovar("tdls_idle_time", (char *)&tdls_idle_time,
- sizeof(tdls_idle_time), iovbuf, sizeof(iovbuf));
- if ((ret = dhd_wl_ioctl_cmd(dhd, WLC_SET_VAR, iovbuf,
- sizeof(iovbuf), TRUE, 0)) < 0) {
- DHD_ERROR(("%s: tdls_idle_time failed %d\n", __FUNCTION__, ret));
- goto exit;
- }
- bcm_mkiovar("tdls_rssi_high", (char *)&tdls_rssi_high, 4, iovbuf, sizeof(iovbuf));
- if ((ret = dhd_wl_ioctl_cmd(dhd, WLC_SET_VAR, iovbuf,
- sizeof(iovbuf), TRUE, 0)) < 0) {
- DHD_ERROR(("%s: tdls_rssi_high failed %d\n", __FUNCTION__, ret));
- goto exit;
- }
- bcm_mkiovar("tdls_rssi_low", (char *)&tdls_rssi_low, 4, iovbuf, sizeof(iovbuf));
- if ((ret = dhd_wl_ioctl_cmd(dhd, WLC_SET_VAR, iovbuf,
- sizeof(iovbuf), TRUE, 0)) < 0) {
- DHD_ERROR(("%s: tdls_rssi_low failed %d\n", __FUNCTION__, ret));
- goto exit;
- }
+ bcm_mkiovar("tdls_idle_time", (char *)&tdls_idle_time, sizeof(tdls_idle_time),
+ iovbuf, sizeof(iovbuf));
+ if ((ret = dhd_wl_ioctl_cmd(dhd, WLC_SET_VAR, iovbuf, sizeof(iovbuf), TRUE, 0)) < 0) {
+ DHD_ERROR(("%s: tdls_idle_time failed %d\n", __FUNCTION__, ret));
+ goto exit;
}
-
+#endif /* WLTDLS_AUTO_ENABLE */
exit:
return ret;
}
-int dhd_tdls_enable(struct net_device *dev, bool tdls_on, bool auto_on, struct ether_addr *mac)
-{
- dhd_info_t *dhd = *(dhd_info_t **)netdev_priv(dev);
- int ret = 0;
- if (dhd)
- ret = _dhd_tdls_enable(&dhd->pub, tdls_on, auto_on, mac);
- else
- ret = BCME_ERROR;
- return ret;
-}
#endif /* WLTDLS */
bool dhd_is_concurrent_mode(dhd_pub_t *dhd)
@@ -4013,9 +3950,6 @@ dhd_preinit_ioctls(dhd_pub_t *dhd)
#ifdef PKT_FILTER_SUPPORT
dhd_pkt_filter_enable = TRUE;
#endif
-#ifdef WLTDLS
- dhd->tdls_enable = FALSE;
-#endif /* WLTDLS */
dhd->suspend_bcn_li_dtim = CUSTOM_SUSPEND_BCN_LI_DTIM;
DHD_TRACE(("Enter %s\n", __FUNCTION__));
dhd->op_mode = 0;
@@ -4189,11 +4123,9 @@ dhd_preinit_ioctls(dhd_pub_t *dhd)
#endif /* ROAM_ENABLE */
#ifdef WLTDLS
- /* by default TDLS on and auto mode off */
- _dhd_tdls_enable(dhd, true, false, NULL);
+ dhd_tdls_enable_disable(dhd, 1);
#endif /* WLTDLS */
-
#ifdef DHD_ENABLE_LPC
/* Set lpc 1 */
bcm_mkiovar("lpc", (char *)&lpc, 4, iovbuf, sizeof(iovbuf));
@@ -4438,32 +4370,6 @@ dhd_preinit_ioctls(dhd_pub_t *dhd)
-#if defined(CUSTOMER_HW10)
- dhd_preinit_config(dhd, 0);
-#endif /* CUSTOMER_HW10 */
-
-#if defined(SOFTAP_TPUT_ENHANCE)
- if (dhd->op_mode & DHD_FLAG_HOSTAP_MODE) {
- dhd_bus_setidletime(dhd, (int)100);
- dhd_use_tcpack_suppress = FALSE;
- memset(buf, 0, sizeof(buf));
- bcm_mkiovar("bus:txglom_auto_control", 0, 0, buf, sizeof(buf));
-
- if ((ret = dhd_wl_ioctl_cmd(dhd, WLC_GET_VAR, buf, sizeof(buf), FALSE, 0)) < 0) {
- glom = 0;
- bcm_mkiovar("bus:txglom", (char *)&glom, 4, iovbuf, sizeof(iovbuf));
- dhd_wl_ioctl_cmd(dhd, WLC_SET_VAR, iovbuf, sizeof(iovbuf), TRUE, 0);
- }
- else {
- if (buf[0] == 0) {
- glom = 1;
- bcm_mkiovar("bus:txglom_auto_control", (char *)&glom, 4, iovbuf,
- sizeof(iovbuf));
- dhd_wl_ioctl_cmd(dhd, WLC_SET_VAR, iovbuf, sizeof(iovbuf), TRUE, 0);
- }
- }
-}
-#endif /* SOFTAP_TPUT_ENHANCE */
/* query for 'ver' to get version info from firmware */
memset(buf, 0, sizeof(buf));
ptr = buf;
@@ -6224,23 +6130,6 @@ int dhd_os_wake_lock_ctrl_timeout_enable(dhd_pub_t *pub, int val)
return 0;
}
-int dhd_os_wake_lock_ctrl_timeout_cancel(dhd_pub_t *pub)
-{
- dhd_info_t *dhd = (dhd_info_t *)(pub->info);
- unsigned long flags;
-
- if (dhd) {
- spin_lock_irqsave(&dhd->wakelock_spinlock, flags);
- dhd->wakelock_ctrl_timeout_enable = 0;
-#ifdef CONFIG_HAS_WAKELOCK
- if (wake_lock_active(&dhd->wl_ctrlwake))
- wake_unlock(&dhd->wl_ctrlwake);
-#endif
- spin_unlock_irqrestore(&dhd->wakelock_spinlock, flags);
- }
- return 0;
-}
-
int net_os_wake_lock_rx_timeout_enable(struct net_device *dev, int val)
{
dhd_info_t *dhd = *(dhd_info_t **)netdev_priv(dev);
diff --git a/drivers/net/wireless/bcmdhd/dhd_pno.c b/drivers/net/wireless/bcmdhd/dhd_pno.c
index 3696a83544ca..165df802e41d 100755
--- a/drivers/net/wireless/bcmdhd/dhd_pno.c
+++ b/drivers/net/wireless/bcmdhd/dhd_pno.c
@@ -22,7 +22,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: dhd_pno.c 435029 2013-11-08 02:47:59Z $
+ * $Id: dhd_pno.c 427050 2013-10-02 03:31:11Z $
*/
#include <typedefs.h>
#include <osl.h>
@@ -91,7 +91,6 @@ is_dfs(uint16 channel)
else
return FALSE;
}
-
int
dhd_pno_clean(dhd_pub_t *dhd)
{
@@ -302,13 +301,13 @@ _dhd_pno_set(dhd_pub_t *dhd, const dhd_pno_params_t *pno_params, dhd_pno_mode_t
/* set bestn to calculate the max mscan which firmware supports */
err = dhd_iovar(dhd, 0, "pfnmem", (char *)&_tmp, sizeof(_tmp), 1);
if (err < 0) {
- DHD_ERROR(("%s : failed to set pfnmem\n", __FUNCTION__));
+ DHD_ERROR(("%s : failed to set pfnmscan\n", __FUNCTION__));
goto exit;
}
/* get max mscan which the firmware supports */
err = dhd_iovar(dhd, 0, "pfnmem", (char *)&_tmp, sizeof(_tmp), 0);
if (err < 0) {
- DHD_ERROR(("%s : failed to get pfnmem\n", __FUNCTION__));
+ DHD_ERROR(("%s : failed to get pfnmscan\n", __FUNCTION__));
goto exit;
}
DHD_PNO((" returned mscan : %d, set bestn : %d\n", _tmp, pfn_param.bestn));
@@ -857,23 +856,15 @@ dhd_pno_set_for_ssid(dhd_pub_t *dhd, wlc_ssid_t* ssid_list, int nssid,
scan_fr, pno_repeat, pno_freq_expo_max, nchan));
_params = &(_pno_state->pno_params_arr[INDEX_OF_LEGACY_PARAMS]);
- if (_pno_state->pno_mode & DHD_PNO_LEGACY_MODE) {
- DHD_ERROR(("%s : Legacy PNO mode was already started, "
- "will disable previous one to start new one\n", __FUNCTION__));
- err = dhd_pno_stop_for_ssid(dhd);
+ if (!(_pno_state->pno_mode & DHD_PNO_LEGACY_MODE)) {
+ _pno_state->pno_mode |= DHD_PNO_LEGACY_MODE;
+ err = _dhd_pno_reinitialize_prof(dhd, _params, DHD_PNO_LEGACY_MODE);
if (err < 0) {
- DHD_ERROR(("%s : failed to stop legacy PNO (err %d)\n",
+ DHD_ERROR(("%s : failed to reinitialize profile (err %d)\n",
__FUNCTION__, err));
goto exit;
}
}
- _pno_state->pno_mode |= DHD_PNO_LEGACY_MODE;
- err = _dhd_pno_reinitialize_prof(dhd, _params, DHD_PNO_LEGACY_MODE);
- if (err < 0) {
- DHD_ERROR(("%s : failed to reinitialize profile (err %d)\n",
- __FUNCTION__, err));
- goto exit;
- }
memset(_chan_list, 0, sizeof(_chan_list));
tot_nchan = nchan;
if (tot_nchan > 0 && channel_list) {
@@ -938,7 +929,7 @@ dhd_pno_set_for_ssid(dhd_pub_t *dhd, wlc_ssid_t* ssid_list, int nssid,
goto exit;
}
if ((err = _dhd_pno_add_ssid(dhd, ssid_list, nssid)) < 0) {
- DHD_ERROR(("failed to add ssid list(err %d), %d in firmware\n", err, nssid));
+ DHD_ERROR(("failed to add ssid list (err %d) in firmware\n", err));
goto exit;
}
for (i = 0; i < nssid; i++) {
@@ -1005,9 +996,6 @@ dhd_pno_set_for_batch(dhd_pub_t *dhd, struct dhd_pno_batch_params *batch_params)
__FUNCTION__));
goto exit;
}
- } else {
- /* batch mode is already started */
- return -EBUSY;
}
_params->params_batch.scan_fr = batch_params->scan_fr;
_params->params_batch.bestn = batch_params->bestn;
diff --git a/drivers/net/wireless/bcmdhd/dhd_sdio.c b/drivers/net/wireless/bcmdhd/dhd_sdio.c
index ec44acdf098f..f9de6efaca75 100755
--- a/drivers/net/wireless/bcmdhd/dhd_sdio.c
+++ b/drivers/net/wireless/bcmdhd/dhd_sdio.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: dhd_sdio.c 440335 2013-12-02 09:33:45Z $
+ * $Id: dhd_sdio.c 426658 2013-09-30 12:14:01Z $
*/
#include <typedefs.h>
@@ -418,8 +418,13 @@ static bool sd1idle;
static bool retrydata;
#define RETRYCHAN(chan) (((chan) == SDPCM_EVENT_CHANNEL) || retrydata)
-static uint watermark = 8;
-static uint mesbusyctrl = 0;
+#if defined(SDIO_CRC_ERROR_FIX)
+static uint watermark = 48;
+static uint mesbusyctrl = 80;
+#else
+static const uint watermark = 8;
+static const uint mesbusyctrl = 0;
+#endif
static const uint firstread = DHD_FIRSTREAD;
#define HDATLEN (firstread - (SDPCM_HDRLEN))
@@ -597,42 +602,31 @@ extern uint32 dhd_get_htsf(void *dhd, int ifidx);
#endif /* WLMEDIA_HTSF */
static void
-dhdsdio_tune_fifoparam(struct dhd_bus *bus)
+dhd_overflow_war(struct dhd_bus *bus)
{
int err;
uint8 devctl, wm, mes;
- if (bus->sih->buscorerev >= 15) {
- /* See .ppt in PR for these recommended values */
- if (bus->blocksize == 512) {
- wm = OVERFLOW_BLKSZ512_WM;
- mes = OVERFLOW_BLKSZ512_MES;
- } else {
- mes = bus->blocksize/4;
- wm = bus->blocksize/4;
- }
- watermark = wm;
- mesbusyctrl = mes;
+ /* See .ppt in PR for these recommended values */
+ if (bus->blocksize == 512) {
+ wm = OVERFLOW_BLKSZ512_WM;
+ mes = OVERFLOW_BLKSZ512_MES;
} else {
- DHD_INFO(("skip fifotune: SdioRev(%d) is lower than minimal requested ver\n",
- bus->sih->buscorerev));
- return;
+ mes = bus->blocksize/4;
+ wm = bus->blocksize/4;
}
+
/* Update watermark */
- if (wm > 0) {
- bcmsdh_cfg_write(bus->sdh, SDIO_FUNC_1, SBSDIO_WATERMARK, wm, &err);
+ bcmsdh_cfg_write(bus->sdh, SDIO_FUNC_1, SBSDIO_WATERMARK, wm, &err);
- devctl = bcmsdh_cfg_read(bus->sdh, SDIO_FUNC_1, SBSDIO_DEVICE_CTL, &err);
- devctl |= SBSDIO_DEVCTL_F2WM_ENAB;
- bcmsdh_cfg_write(bus->sdh, SDIO_FUNC_1, SBSDIO_DEVICE_CTL, devctl, &err);
- }
+ devctl = bcmsdh_cfg_read(bus->sdh, SDIO_FUNC_1, SBSDIO_DEVICE_CTL, &err);
+ devctl |= SBSDIO_DEVCTL_F2WM_ENAB;
+ bcmsdh_cfg_write(bus->sdh, SDIO_FUNC_1, SBSDIO_DEVICE_CTL, devctl, &err);
/* Update MES */
- if (mes > 0) {
- bcmsdh_cfg_write(bus->sdh, SDIO_FUNC_1, SBSDIO_FUNC1_MESBUSYCTRL,
- (mes | SBSDIO_MESBUSYCTRL_ENAB), &err);
- }
+ bcmsdh_cfg_write(bus->sdh, SDIO_FUNC_1, SBSDIO_FUNC1_MESBUSYCTRL,
+ (mes | SBSDIO_MESBUSYCTRL_ENAB), &err);
DHD_INFO(("Apply overflow WAR: 0x%02x 0x%02x 0x%02x\n",
bcmsdh_cfg_read(bus->sdh, SDIO_FUNC_1, SBSDIO_DEVICE_CTL, &err),
@@ -2723,10 +2717,10 @@ enum {
IOV_SDALIGN,
IOV_DEVRESET,
IOV_CPU,
-#if defined(USE_SDIOFIFO_IOVAR)
+#if defined(SDIO_CRC_ERROR_FIX)
IOV_WATERMARK,
IOV_MESBUSYCTRL,
-#endif /* USE_SDIOFIFO_IOVAR */
+#endif /* SDIO_CRC_ERROR_FIX */
#ifdef SDTEST
IOV_PKTGEN,
IOV_EXTLOOP,
@@ -2789,10 +2783,10 @@ const bcm_iovar_t dhdsdio_iovars[] = {
{"extloop", IOV_EXTLOOP, 0, IOVT_BOOL, 0 },
{"pktgen", IOV_PKTGEN, 0, IOVT_BUFFER, sizeof(dhd_pktgen_t) },
#endif /* SDTEST */
-#if defined(USE_SDIOFIFO_IOVAR)
+#if defined(SDIO_CRC_ERROR_FIX)
{"watermark", IOV_WATERMARK, 0, IOVT_UINT32, 0 },
{"mesbusyctrl", IOV_MESBUSYCTRL, 0, IOVT_UINT32, 0 },
-#endif /* USE_SDIOFIFO_IOVAR */
+#endif /* SDIO_CRC_ERROR_FIX */
{"devcap", IOV_DEVCAP, 0, IOVT_UINT32, 0 },
{"dngl_isolation", IOV_DONGLEISOLATION, 0, IOVT_UINT32, 0 },
{"kso", IOV_KSO, 0, IOVT_UINT32, 0 },
@@ -3921,7 +3915,7 @@ dhdsdio_doiovar(dhd_bus_t *bus, const bcm_iovar_t *vi, uint32 actionid, const ch
break;
#endif /* SDTEST */
-#if defined(USE_SDIOFIFO_IOVAR)
+#if defined(SDIO_CRC_ERROR_FIX)
case IOV_GVAL(IOV_WATERMARK):
int_val = (int32)watermark;
bcopy(&int_val, arg, val_size);
@@ -3947,7 +3941,7 @@ dhdsdio_doiovar(dhd_bus_t *bus, const bcm_iovar_t *vi, uint32 actionid, const ch
bcmsdh_cfg_write(bus->sdh, SDIO_FUNC_1, SBSDIO_FUNC1_MESBUSYCTRL,
((uint8)mesbusyctrl | 0x80), NULL);
break;
-#endif
+#endif /* SDIO_CRC_ERROR_FIX */
case IOV_GVAL(IOV_DONGLEISOLATION):
@@ -4409,7 +4403,10 @@ dhd_bus_iovar_op(dhd_pub_t *dhdp, const char *name,
} else {
DHD_INFO(("%s: noted %s update, value now %d\n",
__FUNCTION__, "sd_blocksize", bus->blocksize));
- dhdsdio_tune_fifoparam(bus);
+
+ if ((bus->sih->chip == BCM4335_CHIP_ID) ||
+ (bus->sih->chip == BCM4339_CHIP_ID))
+ dhd_overflow_war(bus);
}
}
bus->roundup = MIN(max_roundup, bus->blocksize);
@@ -4644,11 +4641,22 @@ dhd_bus_init(dhd_pub_t *dhdp, bool enforce_mutex)
bus->hostintmask |= I_XMTDATA_AVAIL;
}
W_SDREG(bus->hostintmask, &bus->regs->hostintmask, retries);
-
- if (bus->sih->buscorerev < 15) {
+#ifdef SDIO_CRC_ERROR_FIX
+ if (bus->blocksize < 512) {
+ mesbusyctrl = watermark = bus->blocksize / 4;
+ }
+#endif /* SDIO_CRC_ERROR_FIX */
+ if (!((bus->sih->chip == BCM4335_CHIP_ID) ||
+ (bus->sih->chip == BCM4339_CHIP_ID))) {
bcmsdh_cfg_write(bus->sdh, SDIO_FUNC_1, SBSDIO_WATERMARK,
(uint8)watermark, &err);
}
+#ifdef SDIO_CRC_ERROR_FIX
+ bcmsdh_cfg_write(bus->sdh, SDIO_FUNC_1, SBSDIO_FUNC1_MESBUSYCTRL,
+ (uint8)mesbusyctrl|0x80, &err);
+ bcmsdh_cfg_write(bus->sdh, SDIO_FUNC_1, SBSDIO_DEVICE_CTL,
+ SBSDIO_DEVCTL_EN_F2_BLK_WATERMARK, NULL);
+#endif /* SDIO_CRC_ERROR_FIX */
/* Set bus state according to enable result */
dhdp->busstate = DHD_BUS_DATA;
@@ -7404,7 +7412,10 @@ dhdsdio_probe_init(dhd_bus_t *bus, osl_t *osh, void *sdh)
} else {
DHD_INFO(("%s: Initial value for %s is %d\n",
__FUNCTION__, "sd_blocksize", bus->blocksize));
- dhdsdio_tune_fifoparam(bus);
+
+ if ((bus->sih->chip == BCM4335_CHIP_ID) ||
+ (bus->sih->chip == BCM4339_CHIP_ID))
+ dhd_overflow_war(bus);
}
bus->roundup = MIN(max_roundup, bus->blocksize);
@@ -8286,30 +8297,3 @@ dhd_get_chipid(dhd_pub_t *dhd)
else
return 0;
}
-
-#if defined(SOFTAP_TPUT_ENHANCE)
-void dhd_bus_setidletime(dhd_pub_t *dhdp, int idle_time)
-{
- if (!dhdp || !dhdp->bus) {
- DHD_ERROR(("%s:Bus is Invalid\n", __FUNCTION__));
- return;
- }
-
- dhdp->bus->idletime = idle_time;
-}
-
-void dhd_bus_getidletime(dhd_pub_t *dhdp, int* idle_time)
-{
- if (!dhdp || !dhdp->bus) {
- DHD_ERROR(("%s:Bus is Invalid\n", __FUNCTION__));
- return;
- }
-
- if (!idle_time) {
- DHD_ERROR(("%s:Arg idle_time is NULL\n", __FUNCTION__));
- return;
- }
-
- *idle_time = dhdp->bus->idletime;
-}
-#endif /* SOFTAP_TPUT_ENHANCE */
diff --git a/drivers/net/wireless/bcmdhd/include/bcmutils.h b/drivers/net/wireless/bcmdhd/include/bcmutils.h
index 7d742cd5224b..b26a1b9d65e9 100755
--- a/drivers/net/wireless/bcmdhd/include/bcmutils.h
+++ b/drivers/net/wireless/bcmdhd/include/bcmutils.h
@@ -666,7 +666,7 @@ extern int bcm_format_ssid(char* buf, const uchar ssid[], uint ssid_len);
#define ARRAYSIZE(a) (sizeof(a) / sizeof(a[0]))
#endif
-#ifndef ARRAYLAST /* returns pointer to last array element */
+#ifndef ARRAYLAST /* returns pointer to last array element */
#define ARRAYLAST(a) (&a[ARRAYSIZE(a)-1])
#endif
@@ -676,7 +676,7 @@ extern void *_bcmutils_dummy_fn;
/* bit map related macros */
#ifndef setbit
-#ifndef NBBY /* the BSD family defines NBBY */
+#ifndef NBBY /* the BSD family defines NBBY */
#define NBBY 8 /* 8 bits per byte */
#endif /* #ifndef NBBY */
#ifdef BCMUTILS_BIT_MACROS_USE_FUNCS
diff --git a/drivers/net/wireless/bcmdhd/include/epivers.h b/drivers/net/wireless/bcmdhd/include/epivers.h
index 36682881025e..0a0e889dbdac 100755
--- a/drivers/net/wireless/bcmdhd/include/epivers.h
+++ b/drivers/net/wireless/bcmdhd/include/epivers.h
@@ -30,26 +30,26 @@
#define EPI_MINOR_VERSION 88
-#define EPI_RC_NUMBER 58
+#define EPI_RC_NUMBER 55
#define EPI_INCREMENTAL_NUMBER 0
#define EPI_BUILD_NUMBER 0
-#define EPI_VERSION 1, 88, 58, 0
+#define EPI_VERSION 1, 88, 55, 0
-#define EPI_VERSION_NUM 0x01583a00
+#define EPI_VERSION_NUM 0x01583700
-#define EPI_VERSION_DEV 1.88.58
+#define EPI_VERSION_DEV 1.88.55
/* Driver Version String, ASCII, 32 chars max */
#ifdef BCMINTERNAL
-#define EPI_VERSION_STR "1.88.58 (r BCMINT)"
+#define EPI_VERSION_STR "1.88.55 (r BCMINT)"
#else
#ifdef WLTEST
-#define EPI_VERSION_STR "1.88.58 (r WLTEST)"
+#define EPI_VERSION_STR "1.88.55 (r WLTEST)"
#else
-#define EPI_VERSION_STR "1.88.58 (r)"
+#define EPI_VERSION_STR "1.88.55 (r)"
#endif
#endif /* BCMINTERNAL */
diff --git a/drivers/net/wireless/bcmdhd/include/proto/ethernet.h b/drivers/net/wireless/bcmdhd/include/proto/ethernet.h
index c594e5c87ff6..2977c31aadc0 100755
--- a/drivers/net/wireless/bcmdhd/include/proto/ethernet.h
+++ b/drivers/net/wireless/bcmdhd/include/proto/ethernet.h
@@ -24,7 +24,7 @@
* $Id: ethernet.h 384540 2013-02-12 04:28:58Z $
*/
-#ifndef _NET_ETHERNET_H_ /* use native BSD ethernet.h when available */
+#ifndef _NET_ETHERNET_H_ /* use native BSD ethernet.h when available */
#define _NET_ETHERNET_H_
#ifndef _TYPEDEFS_H_
@@ -117,7 +117,7 @@
((uint8 *)ea)[5] = ((mgrp_ip) >> 0) & 0xff; \
}
-#ifndef __INCif_etherh /* Quick and ugly hack for VxWorks */
+#ifndef __INCif_etherh /* Quick and ugly hack for VxWorks */
/*
* Structure of a 10Mb/s Ethernet header.
*/
diff --git a/drivers/net/wireless/bcmdhd/include/wlioctl.h b/drivers/net/wireless/bcmdhd/include/wlioctl.h
index f1e4659c62b1..50f98790dbec 100755
--- a/drivers/net/wireless/bcmdhd/include/wlioctl.h
+++ b/drivers/net/wireless/bcmdhd/include/wlioctl.h
@@ -24,7 +24,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: wlioctl.h 435951 2013-11-12 19:46:53Z $
+ * $Id: wlioctl.h 432432 2013-10-28 15:52:47Z $
*/
#ifndef _wlioctl_h_
@@ -4183,6 +4183,7 @@ typedef struct wl_keep_alive_pkt {
#define WL_KEEP_ALIVE_FIXED_LEN OFFSETOF(wl_keep_alive_pkt_t, data)
+#ifdef PKT_FILTER_SUPPORT
/*
* Dongle pattern matching filter.
*/
@@ -4266,6 +4267,7 @@ typedef struct wl_pkt_filter_ports {
#define WL_PKT_FILTER_PORTS_VERSION 0
#define WL_PKT_FILTER_PORTS_MAX 128
+#endif /* PKT_FILTER_SUPPORT */
#define RSN_KCK_LENGTH 16
#define RSN_KEK_LENGTH 16
diff --git a/drivers/net/wireless/bcmdhd/siutils.c b/drivers/net/wireless/bcmdhd/siutils.c
index e1112137b1ff..e0f7199b6fdc 100755
--- a/drivers/net/wireless/bcmdhd/siutils.c
+++ b/drivers/net/wireless/bcmdhd/siutils.c
@@ -22,7 +22,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: siutils.c 434467 2013-11-06 12:41:42Z $
+ * $Id: siutils.c 414368 2013-07-24 15:00:23Z $
*/
#include <bcm_cfg.h>
diff --git a/drivers/net/wireless/bcmdhd/wl_android.c b/drivers/net/wireless/bcmdhd/wl_android.c
index 0ea63fe67506..4a0994b28a08 100755
--- 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 438523 2013-11-22 05:32:50Z $
+ * $Id: wl_android.c 432432 2013-10-28 15:52:47Z $
*/
#include <linux/module.h>
diff --git a/drivers/net/wireless/bcmdhd/wl_cfg80211.c b/drivers/net/wireless/bcmdhd/wl_cfg80211.c
index 3a5cf0e2bcbd..34dfc4039e85 100755
--- a/drivers/net/wireless/bcmdhd/wl_cfg80211.c
+++ b/drivers/net/wireless/bcmdhd/wl_cfg80211.c
@@ -22,7 +22,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_cfg80211.c 439262 2013-11-26 05:09:18Z $
+ * $Id: wl_cfg80211.c 432088 2013-10-25 15:02:04Z $
*/
/* */
#include <typedefs.h>
@@ -344,9 +344,6 @@ static s32 wl_notify_escan_complete(struct wl_priv *wl,
static s32 wl_cfg80211_tdls_oper(struct wiphy *wiphy, struct net_device *dev,
u8 *peer, enum nl80211_tdls_operation oper);
#endif
-#ifdef WL_SCHED_SCAN
-static int wl_cfg80211_sched_scan_stop(struct wiphy *wiphy, struct net_device *dev);
-#endif
/*
* event & event Q handlers for cfg80211 interfaces
@@ -1462,9 +1459,6 @@ wl_cfg80211_del_virtual_iface(struct wiphy *wiphy, bcm_struct_cfgdev *cfgdev)
WL_ERR(("IFDEL didn't complete properly\n"));
}
ret = dhd_del_monitor(dev);
- if (wl_get_mode_by_netdev(wl, dev) == WL_MODE_AP) {
- DHD_OS_WAKE_LOCK_CTRL_TIMEOUT_CANCEL((dhd_pub_t *)(wl->pub));
- }
}
}
return ret;
@@ -3231,11 +3225,6 @@ wl_cfg80211_connect(struct wiphy *wiphy, struct net_device *dev,
wl_notify_escan_complete(wl, dev, true, true);
}
#endif
-#ifdef WL_SCHED_SCAN
- if (wl->sched_scan_req) {
- wl_cfg80211_sched_scan_stop(wiphy, wl_to_prmry_ndev(wl));
- }
-#endif
#if defined(ESCAN_RESULT_PATCH)
if (sme->bssid)
memcpy(connect_req_bssid, sme->bssid, ETHER_ADDR_LEN);
@@ -5174,9 +5163,6 @@ wl_cfg80211_change_bss(struct wiphy *wiphy,
struct net_device *dev,
struct bss_parameters *params)
{
- s32 err = 0;
- s32 ap_isolate = 0;
-
if (params->use_cts_prot >= 0) {
}
@@ -5190,12 +5176,6 @@ wl_cfg80211_change_bss(struct wiphy *wiphy,
}
if (params->ap_isolate >= 0) {
- ap_isolate = params->ap_isolate;
- err = wldev_iovar_setint(dev, "ap_isolate", ap_isolate);
- if (unlikely(err))
- {
- WL_ERR(("set ap_isolate Error (%d)\n", err));
- }
}
if (params->ht_opmode >= 0) {
@@ -6235,9 +6215,6 @@ wl_cfg80211_stop_ap(
}
} else {
WL_DBG(("Stopping P2P GO \n"));
- DHD_OS_WAKE_LOCK_CTRL_TIMEOUT_ENABLE((dhd_pub_t *)(wl->pub),
- DHD_EVENT_TIMEOUT_MS*3);
- DHD_OS_WAKE_LOCK_TIMEOUT((dhd_pub_t *)(wl->pub));
}
exit:
@@ -6437,8 +6414,7 @@ fail:
#define PNO_TIME 30
#define PNO_REPEAT 4
#define PNO_FREQ_EXPO_MAX 2
-static int
-wl_cfg80211_sched_scan_start(struct wiphy *wiphy,
+int wl_cfg80211_sched_scan_start(struct wiphy *wiphy,
struct net_device *dev,
struct cfg80211_sched_scan_request *request)
{
@@ -6502,8 +6478,7 @@ wl_cfg80211_sched_scan_start(struct wiphy *wiphy,
return 0;
}
-static int
-wl_cfg80211_sched_scan_stop(struct wiphy *wiphy, struct net_device *dev)
+int wl_cfg80211_sched_scan_stop(struct wiphy *wiphy, struct net_device *dev)
{
struct wl_priv *wl = wiphy_priv(wiphy);
@@ -8179,7 +8154,6 @@ wl_notify_sched_scan_results(struct wl_priv *wl, struct net_device *ndev,
wl_clr_drv_status(wl, SCANNING, ndev);
goto out_err;
}
- p2p_scan(wl) = false;
}
wl_set_drv_status(wl, SCANNING, ndev);
@@ -10720,41 +10694,32 @@ wl_cfg80211_tdls_oper(struct wiphy *wiphy, struct net_device *dev,
#ifdef WLTDLS
struct wl_priv *wl = wlcfg_drv_priv;
tdls_iovar_t info;
+ dhd_pub_t *dhd = (dhd_pub_t *)(wl->pub);
memset(&info, 0, sizeof(tdls_iovar_t));
if (peer)
memcpy(&info.ea, peer, ETHER_ADDR_LEN);
switch (oper) {
case NL80211_TDLS_DISCOVERY_REQ:
- /* turn on TDLS */
- ret = dhd_tdls_enable(dev, true, false, NULL);
+ if (!dhd->tdls_enable)
+ ret = dhd_tdls_enable_disable(dhd, 1);
if (ret < 0)
return ret;
info.mode = TDLS_MANUAL_EP_DISCOVERY;
break;
case NL80211_TDLS_SETUP:
- /* auto mode on */
- ret = dhd_tdls_enable(dev, true, true, (struct ether_addr *)peer);
- if (ret < 0)
- return ret;
+ info.mode = TDLS_MANUAL_EP_CREATE;
break;
case NL80211_TDLS_TEARDOWN:
info.mode = TDLS_MANUAL_EP_DELETE;
- /* auto mode off */
- ret = dhd_tdls_enable(dev, true, false, (struct ether_addr *)peer);
- if (ret < 0)
- return ret;
break;
default:
WL_ERR(("Unsupported operation : %d\n", oper));
goto out;
}
-
- if (info.mode) {
- ret = wldev_iovar_setbuf(dev, "tdls_endpoint", &info, sizeof(info),
- wl->ioctl_buf, WLC_IOCTL_MAXLEN, &wl->ioctl_buf_sync);
- if (ret) {
- WL_ERR(("tdls_endpoint error %d\n", ret));
- }
+ ret = wldev_iovar_setbuf(dev, "tdls_endpoint", &info, sizeof(info),
+ wl->ioctl_buf, WLC_IOCTL_MAXLEN, &wl->ioctl_buf_sync);
+ if (ret) {
+ WL_ERR(("tdls_endpoint error %d\n", ret));
}
out:
#endif /* WLTDLS */
diff --git a/drivers/net/wireless/bcmdhd/wldev_common.c b/drivers/net/wireless/bcmdhd/wldev_common.c
index b36310d62a5b..9c678d944720 100755
--- a/drivers/net/wireless/bcmdhd/wldev_common.c
+++ b/drivers/net/wireless/bcmdhd/wldev_common.c
@@ -355,7 +355,7 @@ int wldev_set_country(
}
if ((error < 0) ||
- (strncmp(country_code, cspec.country_abbrev, WLC_CNTRY_BUF_SZ) != 0)) {
+ (strncmp(country_code, cspec.ccode, WLC_CNTRY_BUF_SZ) != 0)) {
if (user_enforced) {
bzero(&scbval, sizeof(scb_val_t));