diff options
author | Amit <amit.shakya@stericsson.com> | 2011-08-11 19:33:19 +0530 |
---|---|---|
committer | Philippe LANGLAIS <philippe.langlais@stericsson.com> | 2011-10-13 10:03:25 +0200 |
commit | 3dded119d7f7479e563b20d89aafa0b165249e36 (patch) | |
tree | a3305abae2c6468c89d099fbe9d94c0dbba44062 /drivers/staging/cw1200/wsm.h | |
parent | 0c985dc57c573459b04a5d0188bf4a1be5250ab7 (diff) |
cw1200: Add changes for UAPSD
* Added OID configuration for UAPSD configuration and related data
structure updates
* Added code to disable FastPS at FW in driver when UAPSD is enabled.
* Restructured the code
Change-Id: Ia64533960698646494268599c7f8f9aea57e4d88
Signed-off-by: Amit Shakya <amit.shakya@stericsson.com>
Reviewed-on: http://gerrit.lud.stericsson.com/gerrit/29063
Reviewed-by: Dmitry TARNYAGIN <dmitry.tarnyagin@stericsson.com>
Reviewed-by: Bartosz MARKOWSKI <bartosz.markowski@tieto.com>
Tested-by: Bartosz MARKOWSKI <bartosz.markowski@tieto.com>
Reviewed-on: http://gerrit.lud.stericsson.com/gerrit/33509
Tested-by: Dmitry TARNYAGIN <dmitry.tarnyagin@stericsson.com>
Reviewed-by: Philippe LANGLAIS <philippe.langlais@stericsson.com>
Diffstat (limited to 'drivers/staging/cw1200/wsm.h')
-rw-r--r-- | drivers/staging/cw1200/wsm.h | 28 |
1 files changed, 27 insertions, 1 deletions
diff --git a/drivers/staging/cw1200/wsm.h b/drivers/staging/cw1200/wsm.h index 542eededffc..30db888e535 100644 --- a/drivers/staging/cw1200/wsm.h +++ b/drivers/staging/cw1200/wsm.h @@ -135,6 +135,9 @@ struct cw1200_common; /* 802.11 PS mode */ #define WSM_PSM_PS BIT(0) +/* Fast Power Save bit */ +#define WSM_PSM_FAST_PS_FLAG BIT(7) + /* Dynamic aka Fast power save */ #define WSM_PSM_FAST_PS (BIT(0) | BIT(7)) @@ -1044,6 +1047,9 @@ struct wsm_edca_queue_params { /* the access class. Overrides the global */ /* dot11MaxReceiveLifetime value */ /* [in] */ u32 maxReceiveLifetime; + + /* UAPSD trigger support for the access class. */ + /* [in] */ bool uapsdEnable; }; struct wsm_edca_params { @@ -1051,18 +1057,22 @@ struct wsm_edca_params { struct wsm_edca_queue_params params[4]; }; -#define WSM_EDCA_SET(edca, queue, aifs, cw_min, cw_max, txop) \ +#define WSM_EDCA_SET(edca, queue, aifs, cw_min, cw_max, txop, uapsd) \ do { \ struct wsm_edca_queue_params *p = &(edca)->params[queue]; \ p->cwMin = (cw_min); \ p->cwMax = (cw_max); \ p->aifns = (aifs); \ p->txOpLimit = (txop); \ + p->uapsdEnable = (uapsd); \ } while (0) int wsm_set_edca_params(struct cw1200_common *priv, const struct wsm_edca_params *arg); +int wsm_set_uapsd_param(struct cw1200_common *priv, + const struct wsm_edca_params *arg); + /* 3.38 */ /* Set-System info. Skipped for now. Irrelevent. */ @@ -1548,6 +1558,22 @@ static inline int wsm_use_multi_tx_conf(struct cw1200_common *priv, &arg, sizeof(arg)); } + +/* 4.26 SetUpasdInformation */ +struct wsm_uapsd_info { + __le16 uapsdFlags; + __le16 minAutoTriggerInterval; + __le16 maxAutoTriggerInterval; + __le16 autoTriggerStep; +}; + +static inline int wsm_set_uapsd_info(struct cw1200_common *priv, + struct wsm_uapsd_info *arg) +{ + return wsm_write_mib(priv, WSM_MIB_ID_SET_UAPSD_INFORMATION, + arg, sizeof(*arg)); +} + /* ******************************************************************** */ /* WSM TX port control */ |