aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/mwl8k.c
diff options
context:
space:
mode:
authorYogesh Ashok Powar <yogeshp@marvell.com>2014-02-25 07:11:58 -0500
committerJohn W. Linville <linville@tuxdriver.com>2014-02-28 14:33:10 -0500
commitc3015313aea0f765dbe743f95087a5994db082f2 (patch)
treeaf13ef8af88d3d44d66a632cc358d3103a0d5a33 /drivers/net/wireless/mwl8k.c
parent3ebe8e257307a87c33460aa7d2b75dadd374ed9c (diff)
mwl8k: Adding support to access BBP registers
Adding AP firmware command to access BBP regs. This will be used for retrieving different counters CCA/RX needed for ACS Signed-off-by: Yogesh Ashok Powar <yogeshp@marvell.com> Signed-off-by: Nishant Sarmukadam <nishants@marvell.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/mwl8k.c')
-rw-r--r--drivers/net/wireless/mwl8k.c42
1 files changed, 42 insertions, 0 deletions
diff --git a/drivers/net/wireless/mwl8k.c b/drivers/net/wireless/mwl8k.c
index 4987c3f942ce..6c002f3d91cd 100644
--- a/drivers/net/wireless/mwl8k.c
+++ b/drivers/net/wireless/mwl8k.c
@@ -396,6 +396,7 @@ static const struct ieee80211_rate mwl8k_rates_50[] = {
396#define MWL8K_CMD_SET_HW_SPEC 0x0004 396#define MWL8K_CMD_SET_HW_SPEC 0x0004
397#define MWL8K_CMD_MAC_MULTICAST_ADR 0x0010 397#define MWL8K_CMD_MAC_MULTICAST_ADR 0x0010
398#define MWL8K_CMD_GET_STAT 0x0014 398#define MWL8K_CMD_GET_STAT 0x0014
399#define MWL8K_CMD_BBP_REG_ACCESS 0x001a
399#define MWL8K_CMD_RADIO_CONTROL 0x001c 400#define MWL8K_CMD_RADIO_CONTROL 0x001c
400#define MWL8K_CMD_RF_TX_POWER 0x001e 401#define MWL8K_CMD_RF_TX_POWER 0x001e
401#define MWL8K_CMD_TX_POWER 0x001f 402#define MWL8K_CMD_TX_POWER 0x001f
@@ -2987,6 +2988,47 @@ static int mwl8k_cmd_set_pre_scan(struct ieee80211_hw *hw)
2987} 2988}
2988 2989
2989/* 2990/*
2991 * CMD_BBP_REG_ACCESS.
2992 */
2993struct mwl8k_cmd_bbp_reg_access {
2994 struct mwl8k_cmd_pkt header;
2995 __le16 action;
2996 __le16 offset;
2997 u8 value;
2998 u8 rsrv[3];
2999} __packed;
3000
3001static int
3002mwl8k_cmd_bbp_reg_access(struct ieee80211_hw *hw,
3003 u16 action,
3004 u16 offset,
3005 u8 *value)
3006{
3007 struct mwl8k_cmd_bbp_reg_access *cmd;
3008 int rc;
3009
3010 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL);
3011 if (cmd == NULL)
3012 return -ENOMEM;
3013
3014 cmd->header.code = cpu_to_le16(MWL8K_CMD_BBP_REG_ACCESS);
3015 cmd->header.length = cpu_to_le16(sizeof(*cmd));
3016 cmd->action = cpu_to_le16(action);
3017 cmd->offset = cpu_to_le16(offset);
3018
3019 rc = mwl8k_post_cmd(hw, &cmd->header);
3020
3021 if (!rc)
3022 *value = cmd->value;
3023 else
3024 *value = 0;
3025
3026 kfree(cmd);
3027
3028 return rc;
3029}
3030
3031/*
2990 * CMD_SET_POST_SCAN. 3032 * CMD_SET_POST_SCAN.
2991 */ 3033 */
2992struct mwl8k_cmd_set_post_scan { 3034struct mwl8k_cmd_set_post_scan {