diff options
author | Yogesh Ashok Powar <yogeshp@marvell.com> | 2014-02-25 07:11:58 -0500 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2014-02-28 14:33:10 -0500 |
commit | c3015313aea0f765dbe743f95087a5994db082f2 (patch) | |
tree | af13ef8af88d3d44d66a632cc358d3103a0d5a33 /drivers/net/wireless/mwl8k.c | |
parent | 3ebe8e257307a87c33460aa7d2b75dadd374ed9c (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.c | 42 |
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 | */ | ||
2993 | struct 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 | |||
3001 | static int | ||
3002 | mwl8k_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 | */ |
2992 | struct mwl8k_cmd_set_post_scan { | 3034 | struct mwl8k_cmd_set_post_scan { |