diff options
author | Avinash Patil <patila@marvell.com> | 2012-05-08 21:30:19 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2012-05-16 12:46:35 -0400 |
commit | 40d07030625840156bffe2da3e9f14f87d7a4a99 (patch) | |
tree | 4ff6b294a507e0efbddaef446ce0455f45bb9da1 /drivers | |
parent | 75edd2c6803aec27083643e21aeb9b531587803f (diff) |
mwifiex: add bss start and bss stop commands for AP
1. separate file for preparing uAP command buffer
2. definition of bss_start and bss_stop commands being sent to
firmware
Signed-off-by: Avinash Patil <patila@marvell.com>
Signed-off-by: Yogesh Ashok Powar <yogeshp@marvell.com>
Signed-off-by: Kiran Divekar <dkiran@marvell.com>
Signed-off-by: Bing Zhao <bzhao@marvell.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/net/wireless/mwifiex/Makefile | 1 | ||||
-rw-r--r-- | drivers/net/wireless/mwifiex/cmdevt.c | 16 | ||||
-rw-r--r-- | drivers/net/wireless/mwifiex/fw.h | 3 | ||||
-rw-r--r-- | drivers/net/wireless/mwifiex/main.h | 3 | ||||
-rw-r--r-- | drivers/net/wireless/mwifiex/sta_cmdresp.c | 8 | ||||
-rw-r--r-- | drivers/net/wireless/mwifiex/uap_cmd.c | 46 |
6 files changed, 75 insertions, 2 deletions
diff --git a/drivers/net/wireless/mwifiex/Makefile b/drivers/net/wireless/mwifiex/Makefile index 5c1a46bf1e11..3ec71aeb6aa8 100644 --- a/drivers/net/wireless/mwifiex/Makefile +++ b/drivers/net/wireless/mwifiex/Makefile | |||
@@ -29,6 +29,7 @@ mwifiex-y += scan.o | |||
29 | mwifiex-y += join.o | 29 | mwifiex-y += join.o |
30 | mwifiex-y += sta_ioctl.o | 30 | mwifiex-y += sta_ioctl.o |
31 | mwifiex-y += sta_cmd.o | 31 | mwifiex-y += sta_cmd.o |
32 | mwifiex-y += uap_cmd.o | ||
32 | mwifiex-y += sta_cmdresp.o | 33 | mwifiex-y += sta_cmdresp.o |
33 | mwifiex-y += sta_event.o | 34 | mwifiex-y += sta_event.o |
34 | mwifiex-y += sta_tx.o | 35 | mwifiex-y += sta_tx.o |
diff --git a/drivers/net/wireless/mwifiex/cmdevt.c b/drivers/net/wireless/mwifiex/cmdevt.c index d9f30c5fb16d..51e023ec1de4 100644 --- a/drivers/net/wireless/mwifiex/cmdevt.c +++ b/drivers/net/wireless/mwifiex/cmdevt.c | |||
@@ -545,8 +545,20 @@ int mwifiex_send_cmd_async(struct mwifiex_private *priv, uint16_t cmd_no, | |||
545 | 545 | ||
546 | /* Prepare command */ | 546 | /* Prepare command */ |
547 | if (cmd_no) { | 547 | if (cmd_no) { |
548 | ret = mwifiex_sta_prepare_cmd(priv, cmd_no, cmd_action, | 548 | switch (cmd_no) { |
549 | cmd_oid, data_buf, cmd_ptr); | 549 | case HostCmd_CMD_UAP_SYS_CONFIG: |
550 | case HostCmd_CMD_UAP_BSS_START: | ||
551 | case HostCmd_CMD_UAP_BSS_STOP: | ||
552 | ret = mwifiex_uap_prepare_cmd(priv, cmd_no, cmd_action, | ||
553 | cmd_oid, data_buf, | ||
554 | cmd_ptr); | ||
555 | break; | ||
556 | default: | ||
557 | ret = mwifiex_sta_prepare_cmd(priv, cmd_no, cmd_action, | ||
558 | cmd_oid, data_buf, | ||
559 | cmd_ptr); | ||
560 | break; | ||
561 | } | ||
550 | } else { | 562 | } else { |
551 | ret = mwifiex_cmd_host_cmd(priv, cmd_ptr, data_buf); | 563 | ret = mwifiex_cmd_host_cmd(priv, cmd_ptr, data_buf); |
552 | cmd_node->cmd_flag |= CMD_F_HOSTCMD; | 564 | cmd_node->cmd_flag |= CMD_F_HOSTCMD; |
diff --git a/drivers/net/wireless/mwifiex/fw.h b/drivers/net/wireless/mwifiex/fw.h index 39969184a3f9..5caa826a4371 100644 --- a/drivers/net/wireless/mwifiex/fw.h +++ b/drivers/net/wireless/mwifiex/fw.h | |||
@@ -210,6 +210,9 @@ enum MWIFIEX_802_11_PRIVACY_FILTER { | |||
210 | #define HostCmd_CMD_RSSI_INFO 0x00a4 | 210 | #define HostCmd_CMD_RSSI_INFO 0x00a4 |
211 | #define HostCmd_CMD_FUNC_INIT 0x00a9 | 211 | #define HostCmd_CMD_FUNC_INIT 0x00a9 |
212 | #define HostCmd_CMD_FUNC_SHUTDOWN 0x00aa | 212 | #define HostCmd_CMD_FUNC_SHUTDOWN 0x00aa |
213 | #define HostCmd_CMD_UAP_SYS_CONFIG 0x00b0 | ||
214 | #define HostCmd_CMD_UAP_BSS_START 0x00b1 | ||
215 | #define HostCmd_CMD_UAP_BSS_STOP 0x00b2 | ||
213 | #define HostCmd_CMD_11N_CFG 0x00cd | 216 | #define HostCmd_CMD_11N_CFG 0x00cd |
214 | #define HostCmd_CMD_11N_ADDBA_REQ 0x00ce | 217 | #define HostCmd_CMD_11N_ADDBA_REQ 0x00ce |
215 | #define HostCmd_CMD_11N_ADDBA_RSP 0x00cf | 218 | #define HostCmd_CMD_11N_ADDBA_RSP 0x00cf |
diff --git a/drivers/net/wireless/mwifiex/main.h b/drivers/net/wireless/mwifiex/main.h index ed978de956d8..24db86fb44ce 100644 --- a/drivers/net/wireless/mwifiex/main.h +++ b/drivers/net/wireless/mwifiex/main.h | |||
@@ -762,6 +762,9 @@ int mwifiex_process_rx_packet(struct mwifiex_adapter *adapter, | |||
762 | int mwifiex_sta_prepare_cmd(struct mwifiex_private *, uint16_t cmd_no, | 762 | int mwifiex_sta_prepare_cmd(struct mwifiex_private *, uint16_t cmd_no, |
763 | u16 cmd_action, u32 cmd_oid, | 763 | u16 cmd_action, u32 cmd_oid, |
764 | void *data_buf, void *cmd_buf); | 764 | void *data_buf, void *cmd_buf); |
765 | int mwifiex_uap_prepare_cmd(struct mwifiex_private *priv, uint16_t cmd_no, | ||
766 | u16 cmd_action, u32 cmd_oid, | ||
767 | void *data_buf, void *cmd_buf); | ||
765 | int mwifiex_process_sta_cmdresp(struct mwifiex_private *, u16 cmdresp_no, | 768 | int mwifiex_process_sta_cmdresp(struct mwifiex_private *, u16 cmdresp_no, |
766 | struct host_cmd_ds_command *resp); | 769 | struct host_cmd_ds_command *resp); |
767 | int mwifiex_process_sta_rx_packet(struct mwifiex_adapter *, | 770 | int mwifiex_process_sta_rx_packet(struct mwifiex_adapter *, |
diff --git a/drivers/net/wireless/mwifiex/sta_cmdresp.c b/drivers/net/wireless/mwifiex/sta_cmdresp.c index 3aa54243dea9..a79ed9bd9695 100644 --- a/drivers/net/wireless/mwifiex/sta_cmdresp.c +++ b/drivers/net/wireless/mwifiex/sta_cmdresp.c | |||
@@ -944,6 +944,14 @@ int mwifiex_process_sta_cmdresp(struct mwifiex_private *priv, u16 cmdresp_no, | |||
944 | case HostCmd_CMD_802_11_SUBSCRIBE_EVENT: | 944 | case HostCmd_CMD_802_11_SUBSCRIBE_EVENT: |
945 | ret = mwifiex_ret_subsc_evt(priv, resp, data_buf); | 945 | ret = mwifiex_ret_subsc_evt(priv, resp, data_buf); |
946 | break; | 946 | break; |
947 | case HostCmd_CMD_UAP_SYS_CONFIG: | ||
948 | break; | ||
949 | case HostCmd_CMD_UAP_BSS_START: | ||
950 | priv->bss_started = 1; | ||
951 | break; | ||
952 | case HostCmd_CMD_UAP_BSS_STOP: | ||
953 | priv->bss_started = 0; | ||
954 | break; | ||
947 | default: | 955 | default: |
948 | dev_err(adapter->dev, "CMD_RESP: unknown cmd response %#x\n", | 956 | dev_err(adapter->dev, "CMD_RESP: unknown cmd response %#x\n", |
949 | resp->command); | 957 | resp->command); |
diff --git a/drivers/net/wireless/mwifiex/uap_cmd.c b/drivers/net/wireless/mwifiex/uap_cmd.c new file mode 100644 index 000000000000..97002a40d1c1 --- /dev/null +++ b/drivers/net/wireless/mwifiex/uap_cmd.c | |||
@@ -0,0 +1,46 @@ | |||
1 | /* | ||
2 | * Marvell Wireless LAN device driver: AP specific command handling | ||
3 | * | ||
4 | * Copyright (C) 2012, Marvell International Ltd. | ||
5 | * | ||
6 | * This software file (the "File") is distributed by Marvell International | ||
7 | * Ltd. under the terms of the GNU General Public License Version 2, June 1991 | ||
8 | * (the "License"). You may use, redistribute and/or modify this File in | ||
9 | * accordance with the terms and conditions of the License, a copy of which | ||
10 | * is available by writing to the Free Software Foundation, Inc., | ||
11 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or on the | ||
12 | * worldwide web at http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt. | ||
13 | * | ||
14 | * THE FILE IS DISTRIBUTED AS-IS, WITHOUT WARRANTY OF ANY KIND, AND THE | ||
15 | * IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE | ||
16 | * ARE EXPRESSLY DISCLAIMED. The License provides additional details about | ||
17 | * this warranty disclaimer. | ||
18 | */ | ||
19 | |||
20 | #include "main.h" | ||
21 | |||
22 | /* This function prepares the AP specific commands before sending them | ||
23 | * to the firmware. | ||
24 | * This is a generic function which calls specific command preparation | ||
25 | * routines based upon the command number. | ||
26 | */ | ||
27 | int mwifiex_uap_prepare_cmd(struct mwifiex_private *priv, u16 cmd_no, | ||
28 | u16 cmd_action, u32 cmd_oid, | ||
29 | void *data_buf, void *cmd_buf) | ||
30 | { | ||
31 | struct host_cmd_ds_command *cmd = cmd_buf; | ||
32 | |||
33 | switch (cmd_no) { | ||
34 | case HostCmd_CMD_UAP_BSS_START: | ||
35 | case HostCmd_CMD_UAP_BSS_STOP: | ||
36 | cmd->command = cpu_to_le16(cmd_no); | ||
37 | cmd->size = cpu_to_le16(S_DS_GEN); | ||
38 | break; | ||
39 | default: | ||
40 | dev_err(priv->adapter->dev, | ||
41 | "PREP_CMD: unknown cmd %#x\n", cmd_no); | ||
42 | return -1; | ||
43 | } | ||
44 | |||
45 | return 0; | ||
46 | } | ||