aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless
diff options
context:
space:
mode:
authorDmitry Shmidt <dimitrysh@google.com>2013-01-29 13:57:51 -0800
committerDmitry Shmidt <dimitrysh@google.com>2013-01-29 13:57:51 -0800
commite411d31419b6fab38f7f0268028bdfd18c55d9a6 (patch)
tree45e43387e6f7b9fb4881d9e585434cc0feb27c05 /drivers/net/wireless
parentb33b4fdbb36314cd625b453586cde0060c10a761 (diff)
downloadkernel_samsung_tuna-e411d31419b6fab38f7f0268028bdfd18c55d9a6.zip
kernel_samsung_tuna-e411d31419b6fab38f7f0268028bdfd18c55d9a6.tar.gz
kernel_samsung_tuna-e411d31419b6fab38f7f0268028bdfd18c55d9a6.tar.bz2
net: wireless: bcmdhd: Update to version 5.90.195.114
- Get AP beacon and DTIM to set proper DTIM skipping Change-Id: I6bc23f050c144bf8361078ad587bcadbfe3a37fc Signed-off-by: Dmitry Shmidt <dimitrysh@google.com>
Diffstat (limited to 'drivers/net/wireless')
-rw-r--r--drivers/net/wireless/bcmdhd/dhd.h9
-rw-r--r--drivers/net/wireless/bcmdhd/dhd_common.c46
-rw-r--r--drivers/net/wireless/bcmdhd/include/epivers.h8
3 files changed, 44 insertions, 19 deletions
diff --git a/drivers/net/wireless/bcmdhd/dhd.h b/drivers/net/wireless/bcmdhd/dhd.h
index 5160ee1..c5a74cd 100644
--- 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 344123 2012-07-11 09:33:49Z $
+ * $Id: dhd.h 357954 2012-09-20 18:22:31Z $
*/
/****************
@@ -611,9 +611,14 @@ extern uint dhd_pktgen_len;
#define MAX_PKTGEN_LEN 1800
#endif
+/* hooks for custom glom setting option via Makefile */
+#define DEFAULT_GLOM_VALUE -1
+#ifndef CUSTOM_GLOM_SETTING
+#define CUSTOM_GLOM_SETTING DEFAULT_GLOM_VALUE
+#endif
/* hooks for custom Roaming Trigger setting via Makefile */
-#define DEFAULT_ROAM_TRIGGER_VALUE -75 /* dBm default roam trigger all band */
+#define DEFAULT_ROAM_TRIGGER_VALUE -65 /* dBm default roam trigger all band */
#define DEFAULT_ROAM_TRIGGER_SETTING -1
#ifndef CUSTOM_ROAM_TRIGGER_SETTING
#define CUSTOM_ROAM_TRIGGER_SETTING DEFAULT_ROAM_TRIGGER_VALUE
diff --git a/drivers/net/wireless/bcmdhd/dhd_common.c b/drivers/net/wireless/bcmdhd/dhd_common.c
index d5af27f..d46864c3 100644
--- 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 331276 2012-05-04 08:05:57Z $
+ * $Id: dhd_common.c 380760 2013-01-23 21:59:27Z $
*/
#include <typedefs.h>
#include <osl.h>
@@ -1767,14 +1767,11 @@ bool dhd_is_associated(dhd_pub_t *dhd, void *bss_buf, int *retval)
int
dhd_get_dtim_skip(dhd_pub_t *dhd)
{
- int bcn_li_dtim;
+ int bcn_li_dtim = 1;
+ char buf[128];
int ret = -1;
int dtim_assoc = 0;
-
- if ((dhd->dtim_skip == 0) || (dhd->dtim_skip == 1))
- bcn_li_dtim = 3;
- else
- bcn_li_dtim = dhd->dtim_skip;
+ int ap_beacon = 0;
/* Check if associated */
if (dhd_is_associated(dhd, NULL, NULL) == FALSE) {
@@ -1782,15 +1779,34 @@ dhd_get_dtim_skip(dhd_pub_t *dhd)
goto exit;
}
- /* if assoc grab ap's dtim value */
- if ((ret = dhd_wl_ioctl_cmd(dhd, WLC_GET_DTIMPRD,
- &dtim_assoc, sizeof(dtim_assoc), FALSE, 0)) < 0) {
+ /* read AP beacon if do nother if APs Beacon more that 100msec */
+ bcm_mkiovar("bi_assoc", 0, 0, buf, sizeof(buf));
+ if ((ret = dhd_wl_ioctl_cmd(dhd, WLC_GET_VAR, buf, sizeof(buf), FALSE, 0)) < 0) {
+ DHD_ERROR(("%s failed code %d\n", __FUNCTION__, ret));
+ goto exit;
+ }
+
+ ap_beacon = dtoh32(*(int *)buf);
+
+ /* if APs Beacon more that 100msec do no dtim skip */
+ if (ap_beacon > 100) {
+ DHD_ERROR(("%s no dtim skip for AP with %d beacon\n", __FUNCTION__, ap_beacon));
+ goto exit;
+ }
+
+
+ /* Read DTIM value if associated */
+ memset(buf, 0, sizeof(buf));
+ bcm_mkiovar("dtim_assoc", 0, 0, buf, sizeof(buf));
+ if ((ret = dhd_wl_ioctl_cmd(dhd, WLC_GET_VAR, buf, sizeof(buf), FALSE, 0)) < 0) {
DHD_ERROR(("%s failed code %d\n", __FUNCTION__, ret));
goto exit;
}
- DHD_ERROR(("%s bcn_li_dtim=%d DTIM=%d Listen=%d\n",
- __FUNCTION__, bcn_li_dtim, dtim_assoc, LISTEN_INTERVAL));
+ dtim_assoc = dtoh32(*(int *)buf);
+
+ DHD_ERROR(("%s beacom=%d msec bcn_li_dtim=%d DTIM=%d Listen=%d\n",
+ __FUNCTION__, ap_beacon, bcn_li_dtim, dtim_assoc, LISTEN_INTERVAL));
/* if not assocated just eixt */
if (dtim_assoc == 0) {
@@ -1800,12 +1816,16 @@ dhd_get_dtim_skip(dhd_pub_t *dhd)
/* check if sta listen interval fits into AP dtim */
if (dtim_assoc > LISTEN_INTERVAL) {
/* AP DTIM to big for our Listen Interval : no dtim skiping */
- bcn_li_dtim = 1;
DHD_ERROR(("%s DTIM=%d > Listen=%d : too big ...\n",
__FUNCTION__, dtim_assoc, LISTEN_INTERVAL));
goto exit;
}
+ if ((dhd->dtim_skip == 0) || (dhd->dtim_skip == 1))
+ bcn_li_dtim = 3;
+ else
+ bcn_li_dtim = dhd->dtim_skip;
+
if ((bcn_li_dtim * dtim_assoc) > LISTEN_INTERVAL) {
/* Round up dtim_skip to fit into STAs Listen Interval */
bcn_li_dtim = (int)(LISTEN_INTERVAL / dtim_assoc);
diff --git a/drivers/net/wireless/bcmdhd/include/epivers.h b/drivers/net/wireless/bcmdhd/include/epivers.h
index 37c07e6..fac87f5 100644
--- a/drivers/net/wireless/bcmdhd/include/epivers.h
+++ b/drivers/net/wireless/bcmdhd/include/epivers.h
@@ -33,17 +33,17 @@
#define EPI_RC_NUMBER 195
-#define EPI_INCREMENTAL_NUMBER 104
+#define EPI_INCREMENTAL_NUMBER 114
#define EPI_BUILD_NUMBER 0
-#define EPI_VERSION 5, 90, 195, 104
+#define EPI_VERSION 5, 90, 195, 114
-#define EPI_VERSION_NUM 0x055ac368
+#define EPI_VERSION_NUM 0x055ac372
#define EPI_VERSION_DEV 5.90.195
-#define EPI_VERSION_STR "5.90.195.104"
+#define EPI_VERSION_STR "5.90.195.114"
#endif