diff options
author | Narayan Reddy <narayanr@nvidia.com> | 2014-02-27 15:24:49 +0530 |
---|---|---|
committer | Riham Haidar <rhaidar@nvidia.com> | 2014-03-07 16:16:15 -0800 |
commit | 6fb6e2f1979c8eb265b947d9fc6cfbd380eee74d (patch) | |
tree | d53b753f7f0567420a13f024ed3189a397f990c4 /drivers/net | |
parent | c70ca35ead96722aab3a35e3b0d2bb0374f0c328 (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>
Diffstat (limited to 'drivers/net')
-rw-r--r-- | drivers/net/wireless/bcmdhd/Makefile | 4 | ||||
-rwxr-xr-x | drivers/net/wireless/bcmdhd/bcmsdh_sdmmc.c | 3 | ||||
-rwxr-xr-x | drivers/net/wireless/bcmdhd/bcmutils.c | 2 | ||||
-rwxr-xr-x | drivers/net/wireless/bcmdhd/dhd.h | 14 | ||||
-rwxr-xr-x | drivers/net/wireless/bcmdhd/dhd_cdc.c | 2 | ||||
-rwxr-xr-x | drivers/net/wireless/bcmdhd/dhd_common.c | 29 | ||||
-rwxr-xr-x | drivers/net/wireless/bcmdhd/dhd_linux.c | 149 | ||||
-rwxr-xr-x | drivers/net/wireless/bcmdhd/dhd_pno.c | 28 | ||||
-rwxr-xr-x | drivers/net/wireless/bcmdhd/dhd_sdio.c | 114 | ||||
-rwxr-xr-x | drivers/net/wireless/bcmdhd/include/bcmutils.h | 4 | ||||
-rwxr-xr-x | drivers/net/wireless/bcmdhd/include/epivers.h | 14 | ||||
-rwxr-xr-x | drivers/net/wireless/bcmdhd/include/proto/ethernet.h | 4 | ||||
-rwxr-xr-x | drivers/net/wireless/bcmdhd/include/wlioctl.h | 4 | ||||
-rwxr-xr-x | drivers/net/wireless/bcmdhd/siutils.c | 2 | ||||
-rwxr-xr-x | drivers/net/wireless/bcmdhd/wl_android.c | 2 | ||||
-rwxr-xr-x | drivers/net/wireless/bcmdhd/wl_cfg80211.c | 57 | ||||
-rwxr-xr-x | drivers/net/wireless/bcmdhd/wldev_common.c | 2 |
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)); |