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>
This commit is contained in:
Dmitry Shmidt
2013-01-29 13:57:51 -08:00
parent b33b4fdbb3
commit e411d31419
3 changed files with 44 additions and 19 deletions

View File

@@ -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

View File

@@ -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;
}
DHD_ERROR(("%s bcn_li_dtim=%d DTIM=%d Listen=%d\n",
__FUNCTION__, bcn_li_dtim, dtim_assoc, LISTEN_INTERVAL));
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;
}
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);

View File

@@ -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