Commit cf60106b authored by Glen Lee's avatar Glen Lee Committed by Greg Kroah-Hartman

staging: wilc1000: pass vif to hostIFthread

We will pass vif, which is currently being used as net_device, instead of
hif_dev. This is the first step to use index of vif to pass to the driver.
Add new argument vif to all the functions that send message to hostIFthread and
set vif to msg.vif. As a result, hostIfthread will get vif.
In later patch, we will remove drv of host_if_msg and use vif instead of it.
Signed-off-by: default avatarGlen Lee <glen.lee@atmel.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 1006b5c7
...@@ -194,6 +194,7 @@ struct host_if_msg { ...@@ -194,6 +194,7 @@ struct host_if_msg {
u16 id; u16 id;
union message_body body; union message_body body;
struct host_if_drv *drv; struct host_if_drv *drv;
struct wilc_vif *vif;
}; };
struct join_bss_param { struct join_bss_param {
...@@ -389,9 +390,13 @@ static s32 handle_set_operation_mode(struct host_if_drv *hif_drv, ...@@ -389,9 +390,13 @@ static s32 handle_set_operation_mode(struct host_if_drv *hif_drv,
return result; return result;
} }
static s32 host_int_get_ipaddress(struct host_if_drv *hif_drv, u8 *u16ipadd, u8 idx); static s32 host_int_get_ipaddress(struct wilc_vif *vif,
struct host_if_drv *hif_drv,
u8 *u16ipadd, u8 idx);
static s32 handle_set_ip_address(struct host_if_drv *hif_drv, u8 *ip_addr, u8 idx) static s32 handle_set_ip_address(struct wilc_vif *vif,
struct host_if_drv *hif_drv, u8 *ip_addr,
u8 idx)
{ {
s32 result = 0; s32 result = 0;
struct wid wid; struct wid wid;
...@@ -413,7 +418,7 @@ static s32 handle_set_ip_address(struct host_if_drv *hif_drv, u8 *ip_addr, u8 id ...@@ -413,7 +418,7 @@ static s32 handle_set_ip_address(struct host_if_drv *hif_drv, u8 *ip_addr, u8 id
result = wilc_send_config_pkt(hif_drv->wilc, SET_CFG, &wid, 1, result = wilc_send_config_pkt(hif_drv->wilc, SET_CFG, &wid, 1,
get_id_from_handler(hif_drv)); get_id_from_handler(hif_drv));
host_int_get_ipaddress(hif_drv, firmware_ip_addr, idx); host_int_get_ipaddress(vif, hif_drv, firmware_ip_addr, idx);
if (result) { if (result) {
PRINT_ER("Failed to set IP address\n"); PRINT_ER("Failed to set IP address\n");
...@@ -425,7 +430,8 @@ static s32 handle_set_ip_address(struct host_if_drv *hif_drv, u8 *ip_addr, u8 id ...@@ -425,7 +430,8 @@ static s32 handle_set_ip_address(struct host_if_drv *hif_drv, u8 *ip_addr, u8 id
return result; return result;
} }
static s32 handle_get_ip_address(struct host_if_drv *hif_drv, u8 idx) static s32 handle_get_ip_address(struct wilc_vif *vif,
struct host_if_drv *hif_drv, u8 idx)
{ {
s32 result = 0; s32 result = 0;
struct wid wid; struct wid wid;
...@@ -445,7 +451,7 @@ static s32 handle_get_ip_address(struct host_if_drv *hif_drv, u8 idx) ...@@ -445,7 +451,7 @@ static s32 handle_get_ip_address(struct host_if_drv *hif_drv, u8 idx)
kfree(wid.val); kfree(wid.val);
if (memcmp(get_ip[idx], set_ip[idx], IP_ALEN) != 0) if (memcmp(get_ip[idx], set_ip[idx], IP_ALEN) != 0)
wilc_setup_ipaddress(hif_drv, set_ip[idx], idx); wilc_setup_ipaddress(vif, hif_drv, set_ip[idx], idx);
if (result != 0) { if (result != 0) {
PRINT_ER("Failed to get IP address\n"); PRINT_ER("Failed to get IP address\n");
...@@ -1493,7 +1499,8 @@ static s32 host_int_get_assoc_res_info(struct host_if_drv *hif_drv, ...@@ -1493,7 +1499,8 @@ static s32 host_int_get_assoc_res_info(struct host_if_drv *hif_drv,
u32 u32MaxAssocRespInfoLen, u32 u32MaxAssocRespInfoLen,
u32 *pu32RcvdAssocRespInfoLen); u32 *pu32RcvdAssocRespInfoLen);
static s32 Handle_RcvdGnrlAsyncInfo(struct host_if_drv *hif_drv, static s32 Handle_RcvdGnrlAsyncInfo(struct wilc_vif *vif,
struct host_if_drv *hif_drv,
struct rcvd_async_info *pstrRcvdGnrlAsyncInfo) struct rcvd_async_info *pstrRcvdGnrlAsyncInfo)
{ {
s32 result = 0; s32 result = 0;
...@@ -1622,7 +1629,7 @@ static s32 Handle_RcvdGnrlAsyncInfo(struct host_if_drv *hif_drv, ...@@ -1622,7 +1629,7 @@ static s32 Handle_RcvdGnrlAsyncInfo(struct host_if_drv *hif_drv,
if ((u8MacStatus == MAC_CONNECTED) && if ((u8MacStatus == MAC_CONNECTED) &&
(strConnectInfo.u16ConnectStatus == SUCCESSFUL_STATUSCODE)) { (strConnectInfo.u16ConnectStatus == SUCCESSFUL_STATUSCODE)) {
wilc_set_power_mgmt(hif_drv, 0, 0); wilc_set_power_mgmt(vif, hif_drv, 0, 0);
PRINT_D(HOSTINF_DBG, "MAC status : CONNECTED and Connect Status : Successful\n"); PRINT_D(HOSTINF_DBG, "MAC status : CONNECTED and Connect Status : Successful\n");
hif_drv->hif_state = HOST_IF_CONNECTED; hif_drv->hif_state = HOST_IF_CONNECTED;
...@@ -1668,7 +1675,7 @@ static s32 Handle_RcvdGnrlAsyncInfo(struct host_if_drv *hif_drv, ...@@ -1668,7 +1675,7 @@ static s32 Handle_RcvdGnrlAsyncInfo(struct host_if_drv *hif_drv,
if (hif_drv->usr_conn_req.conn_result) { if (hif_drv->usr_conn_req.conn_result) {
wilc_optaining_ip = false; wilc_optaining_ip = false;
wilc_set_power_mgmt(hif_drv, 0, 0); wilc_set_power_mgmt(vif, hif_drv, 0, 0);
hif_drv->usr_conn_req.conn_result(CONN_DISCONN_EVENT_DISCONN_NOTIF, hif_drv->usr_conn_req.conn_result(CONN_DISCONN_EVENT_DISCONN_NOTIF,
NULL, NULL,
...@@ -1993,7 +2000,8 @@ static int Handle_Key(struct host_if_drv *hif_drv, ...@@ -1993,7 +2000,8 @@ static int Handle_Key(struct host_if_drv *hif_drv,
return result; return result;
} }
static void Handle_Disconnect(struct host_if_drv *hif_drv) static void Handle_Disconnect(struct wilc_vif *vif,
struct host_if_drv *hif_drv)
{ {
struct wid wid; struct wid wid;
...@@ -2008,7 +2016,7 @@ static void Handle_Disconnect(struct host_if_drv *hif_drv) ...@@ -2008,7 +2016,7 @@ static void Handle_Disconnect(struct host_if_drv *hif_drv)
PRINT_D(HOSTINF_DBG, "Sending disconnect request\n"); PRINT_D(HOSTINF_DBG, "Sending disconnect request\n");
wilc_optaining_ip = false; wilc_optaining_ip = false;
wilc_set_power_mgmt(hif_drv, 0, 0); wilc_set_power_mgmt(vif, hif_drv, 0, 0);
eth_zero_addr(wilc_connected_ssid); eth_zero_addr(wilc_connected_ssid);
...@@ -2079,14 +2087,15 @@ static void Handle_Disconnect(struct host_if_drv *hif_drv) ...@@ -2079,14 +2087,15 @@ static void Handle_Disconnect(struct host_if_drv *hif_drv)
up(&hif_drv->sem_test_disconn_block); up(&hif_drv->sem_test_disconn_block);
} }
void wilc_resolve_disconnect_aberration(struct host_if_drv *hif_drv) void wilc_resolve_disconnect_aberration(struct wilc_vif *vif,
struct host_if_drv *hif_drv)
{ {
if (!hif_drv) if (!hif_drv)
return; return;
if ((hif_drv->hif_state == HOST_IF_WAITING_CONN_RESP) || if ((hif_drv->hif_state == HOST_IF_WAITING_CONN_RESP) ||
(hif_drv->hif_state == HOST_IF_CONNECTING)) { (hif_drv->hif_state == HOST_IF_CONNECTING)) {
PRINT_D(HOSTINF_DBG, "\n\n<< correcting Supplicant state machine >>\n\n"); PRINT_D(HOSTINF_DBG, "\n\n<< correcting Supplicant state machine >>\n\n");
wilc_disconnect(hif_drv, 1); wilc_disconnect(vif, hif_drv, 1);
} }
} }
...@@ -2792,12 +2801,14 @@ static int hostIFthread(void *pvArg) ...@@ -2792,12 +2801,14 @@ static int hostIFthread(void *pvArg)
struct host_if_msg msg; struct host_if_msg msg;
struct host_if_drv *hif_drv; struct host_if_drv *hif_drv;
struct wilc *wilc = (struct wilc*)pvArg; struct wilc *wilc = (struct wilc*)pvArg;
struct wilc_vif *vif;
memset(&msg, 0, sizeof(struct host_if_msg)); memset(&msg, 0, sizeof(struct host_if_msg));
while (1) { while (1) {
wilc_mq_recv(&hif_msg_q, &msg, sizeof(struct host_if_msg), &u32Ret); wilc_mq_recv(&hif_msg_q, &msg, sizeof(struct host_if_msg), &u32Ret);
hif_drv = (struct host_if_drv *)msg.drv; hif_drv = (struct host_if_drv *)msg.drv;
vif = msg.vif;
if (msg.id == HOST_IF_MSG_EXIT) { if (msg.id == HOST_IF_MSG_EXIT) {
PRINT_D(GENERIC_DBG, "THREAD: Exiting HostIfThread\n"); PRINT_D(GENERIC_DBG, "THREAD: Exiting HostIfThread\n");
break; break;
...@@ -2840,7 +2851,8 @@ static int hostIFthread(void *pvArg) ...@@ -2840,7 +2851,8 @@ static int hostIFthread(void *pvArg)
break; break;
case HOST_IF_MSG_RCVD_GNRL_ASYNC_INFO: case HOST_IF_MSG_RCVD_GNRL_ASYNC_INFO:
Handle_RcvdGnrlAsyncInfo(msg.drv, &msg.body.async_info); Handle_RcvdGnrlAsyncInfo(vif, msg.drv,
&msg.body.async_info);
break; break;
case HOST_IF_MSG_KEY: case HOST_IF_MSG_KEY:
...@@ -2856,7 +2868,7 @@ static int hostIFthread(void *pvArg) ...@@ -2856,7 +2868,7 @@ static int hostIFthread(void *pvArg)
break; break;
case HOST_IF_MSG_DISCONNECT: case HOST_IF_MSG_DISCONNECT:
Handle_Disconnect(msg.drv); Handle_Disconnect(vif, msg.drv);
break; break;
case HOST_IF_MSG_RCVD_SCAN_COMPLETE: case HOST_IF_MSG_RCVD_SCAN_COMPLETE:
...@@ -2938,14 +2950,15 @@ static int hostIFthread(void *pvArg) ...@@ -2938,14 +2950,15 @@ static int hostIFthread(void *pvArg)
case HOST_IF_MSG_SET_IPADDRESS: case HOST_IF_MSG_SET_IPADDRESS:
PRINT_D(HOSTINF_DBG, "HOST_IF_MSG_SET_IPADDRESS\n"); PRINT_D(HOSTINF_DBG, "HOST_IF_MSG_SET_IPADDRESS\n");
handle_set_ip_address(msg.drv, handle_set_ip_address(vif, msg.drv,
msg.body.ip_info.ip_addr, msg.body.ip_info.ip_addr,
msg.body.ip_info.idx); msg.body.ip_info.idx);
break; break;
case HOST_IF_MSG_GET_IPADDRESS: case HOST_IF_MSG_GET_IPADDRESS:
PRINT_D(HOSTINF_DBG, "HOST_IF_MSG_SET_IPADDRESS\n"); PRINT_D(HOSTINF_DBG, "HOST_IF_MSG_SET_IPADDRESS\n");
handle_get_ip_address(msg.drv, msg.body.ip_info.idx); handle_get_ip_address(vif, msg.drv,
msg.body.ip_info.idx);
break; break;
case HOST_IF_MSG_SET_MAC_ADDRESS: case HOST_IF_MSG_SET_MAC_ADDRESS:
...@@ -3032,7 +3045,8 @@ s32 wilc_remove_key(struct host_if_drv *hif_drv, const u8 *pu8StaAddress) ...@@ -3032,7 +3045,8 @@ s32 wilc_remove_key(struct host_if_drv *hif_drv, const u8 *pu8StaAddress)
return 0; return 0;
} }
int wilc_remove_wep_key(struct host_if_drv *hif_drv, u8 index) int wilc_remove_wep_key(struct wilc_vif *vif,
struct host_if_drv *hif_drv, u8 index)
{ {
int result = 0; int result = 0;
struct host_if_msg msg; struct host_if_msg msg;
...@@ -3049,6 +3063,7 @@ int wilc_remove_wep_key(struct host_if_drv *hif_drv, u8 index) ...@@ -3049,6 +3063,7 @@ int wilc_remove_wep_key(struct host_if_drv *hif_drv, u8 index)
msg.body.key_info.type = WEP; msg.body.key_info.type = WEP;
msg.body.key_info.action = REMOVEKEY; msg.body.key_info.action = REMOVEKEY;
msg.drv = hif_drv; msg.drv = hif_drv;
msg.vif = vif;
msg.body.key_info.attr.wep.index = index; msg.body.key_info.attr.wep.index = index;
result = wilc_mq_send(&hif_msg_q, &msg, sizeof(struct host_if_msg)); result = wilc_mq_send(&hif_msg_q, &msg, sizeof(struct host_if_msg));
...@@ -3059,7 +3074,8 @@ int wilc_remove_wep_key(struct host_if_drv *hif_drv, u8 index) ...@@ -3059,7 +3074,8 @@ int wilc_remove_wep_key(struct host_if_drv *hif_drv, u8 index)
return result; return result;
} }
int wilc_set_wep_default_keyid(struct host_if_drv *hif_drv, u8 index) int wilc_set_wep_default_keyid(struct wilc_vif *vif,
struct host_if_drv *hif_drv, u8 index)
{ {
int result = 0; int result = 0;
struct host_if_msg msg; struct host_if_msg msg;
...@@ -3076,6 +3092,7 @@ int wilc_set_wep_default_keyid(struct host_if_drv *hif_drv, u8 index) ...@@ -3076,6 +3092,7 @@ int wilc_set_wep_default_keyid(struct host_if_drv *hif_drv, u8 index)
msg.body.key_info.type = WEP; msg.body.key_info.type = WEP;
msg.body.key_info.action = DEFAULTKEY; msg.body.key_info.action = DEFAULTKEY;
msg.drv = hif_drv; msg.drv = hif_drv;
msg.vif = vif;
msg.body.key_info.attr.wep.index = index; msg.body.key_info.attr.wep.index = index;
result = wilc_mq_send(&hif_msg_q, &msg, sizeof(struct host_if_msg)); result = wilc_mq_send(&hif_msg_q, &msg, sizeof(struct host_if_msg));
...@@ -3086,10 +3103,8 @@ int wilc_set_wep_default_keyid(struct host_if_drv *hif_drv, u8 index) ...@@ -3086,10 +3103,8 @@ int wilc_set_wep_default_keyid(struct host_if_drv *hif_drv, u8 index)
return result; return result;
} }
int wilc_add_wep_key_bss_sta(struct host_if_drv *hif_drv, int wilc_add_wep_key_bss_sta(struct wilc_vif *vif, struct host_if_drv *hif_drv,
const u8 *key, const u8 *key, u8 len, u8 index)
u8 len,
u8 index)
{ {
int result = 0; int result = 0;
struct host_if_msg msg; struct host_if_msg msg;
...@@ -3105,6 +3120,7 @@ int wilc_add_wep_key_bss_sta(struct host_if_drv *hif_drv, ...@@ -3105,6 +3120,7 @@ int wilc_add_wep_key_bss_sta(struct host_if_drv *hif_drv,
msg.body.key_info.type = WEP; msg.body.key_info.type = WEP;
msg.body.key_info.action = ADDKEY; msg.body.key_info.action = ADDKEY;
msg.drv = hif_drv; msg.drv = hif_drv;
msg.vif = vif;
msg.body.key_info.attr.wep.key = kmemdup(key, len, GFP_KERNEL); msg.body.key_info.attr.wep.key = kmemdup(key, len, GFP_KERNEL);
if (!msg.body.key_info.attr.wep.key) if (!msg.body.key_info.attr.wep.key)
return -ENOMEM; return -ENOMEM;
...@@ -3120,11 +3136,8 @@ int wilc_add_wep_key_bss_sta(struct host_if_drv *hif_drv, ...@@ -3120,11 +3136,8 @@ int wilc_add_wep_key_bss_sta(struct host_if_drv *hif_drv,
return result; return result;
} }
int wilc_add_wep_key_bss_ap(struct host_if_drv *hif_drv, int wilc_add_wep_key_bss_ap(struct wilc_vif *vif, struct host_if_drv *hif_drv,
const u8 *key, const u8 *key, u8 len, u8 index, u8 mode,
u8 len,
u8 index,
u8 mode,
enum AUTHTYPE auth_type) enum AUTHTYPE auth_type)
{ {
int result = 0; int result = 0;
...@@ -3146,6 +3159,7 @@ int wilc_add_wep_key_bss_ap(struct host_if_drv *hif_drv, ...@@ -3146,6 +3159,7 @@ int wilc_add_wep_key_bss_ap(struct host_if_drv *hif_drv,
msg.body.key_info.type = WEP; msg.body.key_info.type = WEP;
msg.body.key_info.action = ADDKEY_AP; msg.body.key_info.action = ADDKEY_AP;
msg.drv = hif_drv; msg.drv = hif_drv;
msg.vif = vif;
msg.body.key_info.attr.wep.key = kmemdup(key, len, GFP_KERNEL); msg.body.key_info.attr.wep.key = kmemdup(key, len, GFP_KERNEL);
if (!msg.body.key_info.attr.wep.key) if (!msg.body.key_info.attr.wep.key)
return -ENOMEM; return -ENOMEM;
...@@ -3164,10 +3178,10 @@ int wilc_add_wep_key_bss_ap(struct host_if_drv *hif_drv, ...@@ -3164,10 +3178,10 @@ int wilc_add_wep_key_bss_ap(struct host_if_drv *hif_drv,
return result; return result;
} }
int wilc_add_ptk(struct host_if_drv *hif_drv, const u8 *ptk, int wilc_add_ptk(struct wilc_vif *vif, struct host_if_drv *hif_drv,
u8 ptk_key_len, const u8 *mac_addr, const u8 *ptk, u8 ptk_key_len, const u8 *mac_addr,
const u8 *rx_mic, const u8 *tx_mic, const u8 *rx_mic, const u8 *tx_mic, u8 mode, u8 cipher_mode,
u8 mode, u8 cipher_mode, u8 index) u8 index)
{ {
int result = 0; int result = 0;
struct host_if_msg msg; struct host_if_msg msg;
...@@ -3219,6 +3233,7 @@ int wilc_add_ptk(struct host_if_drv *hif_drv, const u8 *ptk, ...@@ -3219,6 +3233,7 @@ int wilc_add_ptk(struct host_if_drv *hif_drv, const u8 *ptk,
msg.body.key_info.attr.wpa.mac_addr = mac_addr; msg.body.key_info.attr.wpa.mac_addr = mac_addr;
msg.body.key_info.attr.wpa.mode = cipher_mode; msg.body.key_info.attr.wpa.mode = cipher_mode;
msg.drv = hif_drv; msg.drv = hif_drv;
msg.vif = vif;
result = wilc_mq_send(&hif_msg_q, &msg, sizeof(struct host_if_msg)); result = wilc_mq_send(&hif_msg_q, &msg, sizeof(struct host_if_msg));
...@@ -3230,11 +3245,10 @@ int wilc_add_ptk(struct host_if_drv *hif_drv, const u8 *ptk, ...@@ -3230,11 +3245,10 @@ int wilc_add_ptk(struct host_if_drv *hif_drv, const u8 *ptk,
return result; return result;
} }
int wilc_add_rx_gtk(struct host_if_drv *hif_drv, const u8 *rx_gtk, int wilc_add_rx_gtk(struct wilc_vif *vif, struct host_if_drv *hif_drv,
u8 gtk_key_len, u8 index, const u8 *rx_gtk, u8 gtk_key_len, u8 index,
u32 key_rsc_len, const u8 *key_rsc, u32 key_rsc_len, const u8 *key_rsc, const u8 *rx_mic,
const u8 *rx_mic, const u8 *tx_mic, const u8 *tx_mic, u8 mode, u8 cipher_mode)
u8 mode, u8 cipher_mode)
{ {
int result = 0; int result = 0;
struct host_if_msg msg; struct host_if_msg msg;
...@@ -3263,6 +3277,7 @@ int wilc_add_rx_gtk(struct host_if_drv *hif_drv, const u8 *rx_gtk, ...@@ -3263,6 +3277,7 @@ int wilc_add_rx_gtk(struct host_if_drv *hif_drv, const u8 *rx_gtk,
msg.id = HOST_IF_MSG_KEY; msg.id = HOST_IF_MSG_KEY;
msg.body.key_info.type = WPA_RX_GTK; msg.body.key_info.type = WPA_RX_GTK;
msg.drv = hif_drv; msg.drv = hif_drv;
msg.vif = vif;
if (mode == AP_MODE) { if (mode == AP_MODE) {
msg.body.key_info.action = ADDKEY_AP; msg.body.key_info.action = ADDKEY_AP;
...@@ -3298,7 +3313,8 @@ int wilc_add_rx_gtk(struct host_if_drv *hif_drv, const u8 *rx_gtk, ...@@ -3298,7 +3313,8 @@ int wilc_add_rx_gtk(struct host_if_drv *hif_drv, const u8 *rx_gtk,
return result; return result;
} }
s32 wilc_set_pmkid_info(struct host_if_drv *hif_drv, struct host_if_pmkid_attr *pu8PmkidInfoArray) s32 wilc_set_pmkid_info(struct wilc_vif *vif, struct host_if_drv *hif_drv,
struct host_if_pmkid_attr *pu8PmkidInfoArray)
{ {
s32 result = 0; s32 result = 0;
struct host_if_msg msg; struct host_if_msg msg;
...@@ -3315,6 +3331,7 @@ s32 wilc_set_pmkid_info(struct host_if_drv *hif_drv, struct host_if_pmkid_attr * ...@@ -3315,6 +3331,7 @@ s32 wilc_set_pmkid_info(struct host_if_drv *hif_drv, struct host_if_pmkid_attr *
msg.body.key_info.type = PMKSA; msg.body.key_info.type = PMKSA;
msg.body.key_info.action = ADDKEY; msg.body.key_info.action = ADDKEY;
msg.drv = hif_drv; msg.drv = hif_drv;
msg.vif = vif;
for (i = 0; i < pu8PmkidInfoArray->numpmkid; i++) { for (i = 0; i < pu8PmkidInfoArray->numpmkid; i++) {
memcpy(msg.body.key_info.attr.pmkid.pmkidlist[i].bssid, memcpy(msg.body.key_info.attr.pmkid.pmkidlist[i].bssid,
...@@ -3330,7 +3347,8 @@ s32 wilc_set_pmkid_info(struct host_if_drv *hif_drv, struct host_if_pmkid_attr * ...@@ -3330,7 +3347,8 @@ s32 wilc_set_pmkid_info(struct host_if_drv *hif_drv, struct host_if_pmkid_attr *
return result; return result;
} }
s32 wilc_get_mac_address(struct host_if_drv *hif_drv, u8 *pu8MacAddress) s32 wilc_get_mac_address(struct wilc_vif *vif, struct host_if_drv *hif_drv,
u8 *pu8MacAddress)
{ {
s32 result = 0; s32 result = 0;
struct host_if_msg msg; struct host_if_msg msg;
...@@ -3340,6 +3358,7 @@ s32 wilc_get_mac_address(struct host_if_drv *hif_drv, u8 *pu8MacAddress) ...@@ -3340,6 +3358,7 @@ s32 wilc_get_mac_address(struct host_if_drv *hif_drv, u8 *pu8MacAddress)
msg.id = HOST_IF_MSG_GET_MAC_ADDRESS; msg.id = HOST_IF_MSG_GET_MAC_ADDRESS;
msg.body.get_mac_info.mac_addr = pu8MacAddress; msg.body.get_mac_info.mac_addr = pu8MacAddress;
msg.drv = hif_drv; msg.drv = hif_drv;
msg.vif = vif;
result = wilc_mq_send(&hif_msg_q, &msg, sizeof(struct host_if_msg)); result = wilc_mq_send(&hif_msg_q, &msg, sizeof(struct host_if_msg));
if (result) { if (result) {
...@@ -3351,7 +3370,8 @@ s32 wilc_get_mac_address(struct host_if_drv *hif_drv, u8 *pu8MacAddress) ...@@ -3351,7 +3370,8 @@ s32 wilc_get_mac_address(struct host_if_drv *hif_drv, u8 *pu8MacAddress)
return result; return result;
} }
s32 wilc_set_mac_address(struct host_if_drv *hif_drv, u8 *pu8MacAddress) s32 wilc_set_mac_address(struct wilc_vif *vif, struct host_if_drv *hif_drv,
u8 *pu8MacAddress)
{ {
s32 result = 0; s32 result = 0;
struct host_if_msg msg; struct host_if_msg msg;
...@@ -3362,6 +3382,7 @@ s32 wilc_set_mac_address(struct host_if_drv *hif_drv, u8 *pu8MacAddress) ...@@ -3362,6 +3382,7 @@ s32 wilc_set_mac_address(struct host_if_drv *hif_drv, u8 *pu8MacAddress)
msg.id = HOST_IF_MSG_SET_MAC_ADDRESS; msg.id = HOST_IF_MSG_SET_MAC_ADDRESS;
memcpy(msg.body.set_mac_info.mac_addr, pu8MacAddress, ETH_ALEN); memcpy(msg.body.set_mac_info.mac_addr, pu8MacAddress, ETH_ALEN);
msg.drv = hif_drv; msg.drv = hif_drv;
msg.vif = vif;
result = wilc_mq_send(&hif_msg_q, &msg, sizeof(struct host_if_msg)); result = wilc_mq_send(&hif_msg_q, &msg, sizeof(struct host_if_msg));
if (result) if (result)
...@@ -3370,12 +3391,12 @@ s32 wilc_set_mac_address(struct host_if_drv *hif_drv, u8 *pu8MacAddress) ...@@ -3370,12 +3391,12 @@ s32 wilc_set_mac_address(struct host_if_drv *hif_drv, u8 *pu8MacAddress)
return result; return result;
} }
s32 wilc_set_join_req(struct host_if_drv *hif_drv, u8 *pu8bssid, s32 wilc_set_join_req(struct wilc_vif *vif, struct host_if_drv *hif_drv,
const u8 *pu8ssid, size_t ssidLen, u8 *pu8bssid, const u8 *pu8ssid, size_t ssidLen,
const u8 *pu8IEs, size_t IEsLen, const u8 *pu8IEs, size_t IEsLen,
wilc_connect_result pfConnectResult, void *pvUserArg, wilc_connect_result pfConnectResult, void *pvUserArg,
u8 u8security, enum AUTHTYPE tenuAuth_type, u8 u8security, enum AUTHTYPE tenuAuth_type,
u8 u8channel, void *pJoinParams) u8 u8channel, void *pJoinParams)
{ {
s32 result = 0; s32 result = 0;
struct host_if_msg msg; struct host_if_msg msg;
...@@ -3401,6 +3422,7 @@ s32 wilc_set_join_req(struct host_if_drv *hif_drv, u8 *pu8bssid, ...@@ -3401,6 +3422,7 @@ s32 wilc_set_join_req(struct host_if_drv *hif_drv, u8 *pu8bssid,
msg.body.con_info.arg = pvUserArg; msg.body.con_info.arg = pvUserArg;
msg.body.con_info.params = pJoinParams; msg.body.con_info.params = pJoinParams;
msg.drv = hif_drv ; msg.drv = hif_drv ;
msg.vif = vif;
if (pu8bssid) { if (pu8bssid) {
msg.body.con_info.bssid = kmalloc(6, GFP_KERNEL); msg.body.con_info.bssid = kmalloc(6, GFP_KERNEL);
...@@ -3437,7 +3459,7 @@ s32 wilc_set_join_req(struct host_if_drv *hif_drv, u8 *pu8bssid, ...@@ -3437,7 +3459,7 @@ s32 wilc_set_join_req(struct host_if_drv *hif_drv, u8 *pu8bssid,
return result; return result;
} }
s32 wilc_flush_join_req(struct host_if_drv *hif_drv) s32 wilc_flush_join_req(struct wilc_vif *vif, struct host_if_drv *hif_drv)
{ {
s32 result = 0; s32 result = 0;
struct host_if_msg msg; struct host_if_msg msg;
...@@ -3452,6 +3474,7 @@ s32 wilc_flush_join_req(struct host_if_drv *hif_drv) ...@@ -3452,6 +3474,7 @@ s32 wilc_flush_join_req(struct host_if_drv *hif_drv)
msg.id = HOST_IF_MSG_FLUSH_CONNECT; msg.id = HOST_IF_MSG_FLUSH_CONNECT;
msg.drv = hif_drv; msg.drv = hif_drv;
msg.vif = vif;
result = wilc_mq_send(&hif_msg_q, &msg, sizeof(struct host_if_msg)); result = wilc_mq_send(&hif_msg_q, &msg, sizeof(struct host_if_msg));
if (result) { if (result) {
...@@ -3462,7 +3485,8 @@ s32 wilc_flush_join_req(struct host_if_drv *hif_drv) ...@@ -3462,7 +3485,8 @@ s32 wilc_flush_join_req(struct host_if_drv *hif_drv)
return result; return result;
} }
s32 wilc_disconnect(struct host_if_drv *hif_drv, u16 u16ReasonCode) s32 wilc_disconnect(struct wilc_vif *vif, struct host_if_drv *hif_drv,
u16 u16ReasonCode)
{ {
s32 result = 0; s32 result = 0;
struct host_if_msg msg; struct host_if_msg msg;
...@@ -3476,6 +3500,7 @@ s32 wilc_disconnect(struct host_if_drv *hif_drv, u16 u16ReasonCode) ...@@ -3476,6 +3500,7 @@ s32 wilc_disconnect(struct host_if_drv *hif_drv, u16 u16ReasonCode)
msg.id = HOST_IF_MSG_DISCONNECT; msg.id = HOST_IF_MSG_DISCONNECT;
msg.drv = hif_drv; msg.drv = hif_drv;
msg.vif = vif;
result = wilc_mq_send(&hif_msg_q, &msg, sizeof(struct host_if_msg)); result = wilc_mq_send(&hif_msg_q, &msg, sizeof(struct host_if_msg));
if (result) if (result)
...@@ -3517,7 +3542,8 @@ static s32 host_int_get_assoc_res_info(struct host_if_drv *hif_drv, ...@@ -3517,7 +3542,8 @@ static s32 host_int_get_assoc_res_info(struct host_if_drv *hif_drv,
return result; return result;
} }
int wilc_set_mac_chnl_num(struct host_if_drv *hif_drv, u8 channel) int wilc_set_mac_chnl_num(struct wilc_vif *vif, struct host_if_drv *hif_drv,
u8 channel)
{ {
int result; int result;
struct host_if_msg msg; struct host_if_msg msg;
...@@ -3531,6 +3557,7 @@ int wilc_set_mac_chnl_num(struct host_if_drv *hif_drv, u8 channel) ...@@ -3531,6 +3557,7 @@ int wilc_set_mac_chnl_num(struct host_if_drv *hif_drv, u8 channel)
msg.id = HOST_IF_MSG_SET_CHANNEL; msg.id = HOST_IF_MSG_SET_CHANNEL;
msg.body.channel_info.set_ch = channel; msg.body.channel_info.set_ch = channel;
msg.drv = hif_drv; msg.drv = hif_drv;
msg.vif = vif;
result = wilc_mq_send(&hif_msg_q, &msg, sizeof(struct host_if_msg)); result = wilc_mq_send(&hif_msg_q, &msg, sizeof(struct host_if_msg));
if (result) { if (result) {
...@@ -3559,7 +3586,7 @@ int wilc_wait_msg_queue_idle(void) ...@@ -3559,7 +3586,7 @@ int wilc_wait_msg_queue_idle(void)
return result; return result;
} }
int wilc_set_wfi_drv_handler(struct host_if_drv *hif_drv) int wilc_set_wfi_drv_handler(struct wilc_vif *vif, struct host_if_drv *hif_drv)
{ {
int result = 0; int result = 0;
struct host_if_msg msg; struct host_if_msg msg;
...@@ -3568,6 +3595,7 @@ int wilc_set_wfi_drv_handler(struct host_if_drv *hif_drv) ...@@ -3568,6 +3595,7 @@ int wilc_set_wfi_drv_handler(struct host_if_drv *hif_drv)
msg.id = HOST_IF_MSG_SET_WFIDRV_HANDLER; msg.id = HOST_IF_MSG_SET_WFIDRV_HANDLER;
msg.body.drv.handler = get_id_from_handler(hif_drv); msg.body.drv.handler = get_id_from_handler(hif_drv);
msg.drv = hif_drv; msg.drv = hif_drv;
msg.vif = vif;
result = wilc_mq_send(&hif_msg_q, &msg, sizeof(struct host_if_msg)); result = wilc_mq_send(&hif_msg_q, &msg, sizeof(struct host_if_msg));
if (result) { if (result) {
...@@ -3578,7 +3606,8 @@ int wilc_set_wfi_drv_handler(struct host_if_drv *hif_drv) ...@@ -3578,7 +3606,8 @@ int wilc_set_wfi_drv_handler(struct host_if_drv *hif_drv)
return result; return result;
} }
int wilc_set_operation_mode(struct host_if_drv *hif_drv, u32 mode) int wilc_set_operation_mode(struct wilc_vif *vif, struct host_if_drv *hif_drv,
u32 mode)
{ {
int result = 0; int result = 0;
struct host_if_msg msg; struct host_if_msg msg;
...@@ -3587,6 +3616,7 @@ int wilc_set_operation_mode(struct host_if_drv *hif_drv, u32 mode) ...@@ -3587,6 +3616,7 @@ int wilc_set_operation_mode(struct host_if_drv *hif_drv, u32 mode)
msg.id = HOST_IF_MSG_SET_OPERATION_MODE; msg.id = HOST_IF_MSG_SET_OPERATION_MODE;
msg.body.mode.mode = mode; msg.body.mode.mode = mode;
msg.drv = hif_drv; msg.drv = hif_drv;
msg.vif = vif;
result = wilc_mq_send(&hif_msg_q, &msg, sizeof(struct host_if_msg)); result = wilc_mq_send(&hif_msg_q, &msg, sizeof(struct host_if_msg));
if (result) { if (result) {
...@@ -3597,7 +3627,7 @@ int wilc_set_operation_mode(struct host_if_drv *hif_drv, u32 mode) ...@@ -3597,7 +3627,7 @@ int wilc_set_operation_mode(struct host_if_drv *hif_drv, u32 mode)
return result; return result;
} }
s32 wilc_get_inactive_time(struct host_if_drv *hif_drv, s32 wilc_get_inactive_time(struct wilc_vif *vif, struct host_if_drv *hif_drv,
const u8 *mac, u32 *pu32InactiveTime) const u8 *mac, u32 *pu32InactiveTime)
{ {
s32 result = 0; s32 result = 0;
...@@ -3613,6 +3643,7 @@ s32 wilc_get_inactive_time(struct host_if_drv *hif_drv, ...@@ -3613,6 +3643,7 @@ s32 wilc_get_inactive_time(struct host_if_drv *hif_drv,
msg.id = HOST_IF_MSG_GET_INACTIVETIME; msg.id = HOST_IF_MSG_GET_INACTIVETIME;
msg.drv = hif_drv; msg.drv = hif_drv;
msg.vif = vif;
result = wilc_mq_send(&hif_msg_q, &msg, sizeof(struct host_if_msg)); result = wilc_mq_send(&hif_msg_q, &msg, sizeof(struct host_if_msg));
if (result) if (result)
...@@ -3625,7 +3656,8 @@ s32 wilc_get_inactive_time(struct host_if_drv *hif_drv, ...@@ -3625,7 +3656,8 @@ s32 wilc_get_inactive_time(struct host_if_drv *hif_drv,
return result; return result;
} }
s32 wilc_get_rssi(struct host_if_drv *hif_drv, s8 *ps8Rssi) s32 wilc_get_rssi(struct wilc_vif *vif, struct host_if_drv *hif_drv,
s8 *ps8Rssi)
{ {
s32 result = 0; s32 result = 0;
struct host_if_msg msg; struct host_if_msg msg;
...@@ -3633,6 +3665,7 @@ s32 wilc_get_rssi(struct host_if_drv *hif_drv, s8 *ps8Rssi) ...@@ -3633,6 +3665,7 @@ s32 wilc_get_rssi(struct host_if_drv *hif_drv, s8 *ps8Rssi)
memset(&msg, 0, sizeof(struct host_if_msg)); memset(&msg, 0, sizeof(struct host_if_msg));
msg.id = HOST_IF_MSG_GET_RSSI; msg.id = HOST_IF_MSG_GET_RSSI;
msg.drv = hif_drv; msg.drv = hif_drv;
msg.vif = vif;
result = wilc_mq_send(&hif_msg_q, &msg, sizeof(struct host_if_msg)); result = wilc_mq_send(&hif_msg_q, &msg, sizeof(struct host_if_msg));
if (result) { if (result) {
...@@ -3652,7 +3685,8 @@ s32 wilc_get_rssi(struct host_if_drv *hif_drv, s8 *ps8Rssi) ...@@ -3652,7 +3685,8 @@ s32 wilc_get_rssi(struct host_if_drv *hif_drv, s8 *ps8Rssi)
return result; return result;
} }
s32 wilc_get_statistics(struct host_if_drv *hif_drv, struct rf_info *pstrStatistics) s32 wilc_get_statistics(struct wilc_vif *vif, struct host_if_drv *hif_drv,
struct rf_info *pstrStatistics)
{ {
s32 result = 0; s32 result = 0;
struct host_if_msg msg; struct host_if_msg msg;
...@@ -3661,6 +3695,7 @@ s32 wilc_get_statistics(struct host_if_drv *hif_drv, struct rf_info *pstrStatist ...@@ -3661,6 +3695,7 @@ s32 wilc_get_statistics(struct host_if_drv *hif_drv, struct rf_info *pstrStatist
msg.id = HOST_IF_MSG_GET_STATISTICS; msg.id = HOST_IF_MSG_GET_STATISTICS;
msg.body.data = (char *)pstrStatistics; msg.body.data = (char *)pstrStatistics;
msg.drv = hif_drv; msg.drv = hif_drv;
msg.vif = vif;
result = wilc_mq_send(&hif_msg_q, &msg, sizeof(struct host_if_msg)); result = wilc_mq_send(&hif_msg_q, &msg, sizeof(struct host_if_msg));
if (result) { if (result) {
...@@ -3672,11 +3707,11 @@ s32 wilc_get_statistics(struct host_if_drv *hif_drv, struct rf_info *pstrStatist ...@@ -3672,11 +3707,11 @@ s32 wilc_get_statistics(struct host_if_drv *hif_drv, struct rf_info *pstrStatist
return result; return result;
} }
s32 wilc_scan(struct host_if_drv *hif_drv, u8 u8ScanSource, s32 wilc_scan(struct wilc_vif *vif, struct host_if_drv *hif_drv,
u8 u8ScanType, u8 *pu8ChnlFreqList, u8 u8ScanSource, u8 u8ScanType, u8 *pu8ChnlFreqList,
u8 u8ChnlListLen, const u8 *pu8IEs, u8 u8ChnlListLen, const u8 *pu8IEs,
size_t IEsLen, wilc_scan_result ScanResult, size_t IEsLen, wilc_scan_result ScanResult,
void *pvUserArg, struct hidden_network *pstrHiddenNetwork) void *pvUserArg, struct hidden_network *pstrHiddenNetwork)
{ {
s32 result = 0; s32 result = 0;
struct host_if_msg msg; struct host_if_msg msg;
...@@ -3698,6 +3733,7 @@ s32 wilc_scan(struct host_if_drv *hif_drv, u8 u8ScanSource, ...@@ -3698,6 +3733,7 @@ s32 wilc_scan(struct host_if_drv *hif_drv, u8 u8ScanSource,
PRINT_D(HOSTINF_DBG, "pstrHiddenNetwork IS EQUAL TO NULL\n"); PRINT_D(HOSTINF_DBG, "pstrHiddenNetwork IS EQUAL TO NULL\n");
msg.drv = hif_drv; msg.drv = hif_drv;
msg.vif = vif;
msg.body.scan_info.src = u8ScanSource; msg.body.scan_info.src = u8ScanSource;
msg.body.scan_info.type = u8ScanType; msg.body.scan_info.type = u8ScanType;
msg.body.scan_info.result = ScanResult; msg.body.scan_info.result = ScanResult;
...@@ -3725,7 +3761,7 @@ s32 wilc_scan(struct host_if_drv *hif_drv, u8 u8ScanSource, ...@@ -3725,7 +3761,7 @@ s32 wilc_scan(struct host_if_drv *hif_drv, u8 u8ScanSource,
return result; return result;
} }
s32 wilc_hif_set_cfg(struct host_if_drv *hif_drv, s32 wilc_hif_set_cfg(struct wilc_vif *vif, struct host_if_drv *hif_drv,
struct cfg_param_val *pstrCfgParamVal) struct cfg_param_val *pstrCfgParamVal)
{ {
s32 result = 0; s32 result = 0;
...@@ -3740,6 +3776,7 @@ s32 wilc_hif_set_cfg(struct host_if_drv *hif_drv, ...@@ -3740,6 +3776,7 @@ s32 wilc_hif_set_cfg(struct host_if_drv *hif_drv,
msg.id = HOST_IF_MSG_CFG_PARAMS; msg.id = HOST_IF_MSG_CFG_PARAMS;
msg.body.cfg_info.cfg_attr_info = *pstrCfgParamVal; msg.body.cfg_info.cfg_attr_info = *pstrCfgParamVal;
msg.drv = hif_drv; msg.drv = hif_drv;
msg.vif = vif;
result = wilc_mq_send(&hif_msg_q, &msg, sizeof(struct host_if_msg)); result = wilc_mq_send(&hif_msg_q, &msg, sizeof(struct host_if_msg));
...@@ -3882,7 +3919,7 @@ s32 wilc_init(struct net_device *dev, struct host_if_drv **hif_drv_handler) ...@@ -3882,7 +3919,7 @@ s32 wilc_init(struct net_device *dev, struct host_if_drv **hif_drv_handler)
return result; return result;
} }
s32 wilc_deinit(struct host_if_drv *hif_drv) s32 wilc_deinit(struct wilc_vif *vif, struct host_if_drv *hif_drv)
{ {
s32 result = 0; s32 result = 0;
struct host_if_msg msg; struct host_if_msg msg;
...@@ -3909,7 +3946,7 @@ s32 wilc_deinit(struct host_if_drv *hif_drv) ...@@ -3909,7 +3946,7 @@ s32 wilc_deinit(struct host_if_drv *hif_drv)
del_timer_sync(&hif_drv->remain_on_ch_timer); del_timer_sync(&hif_drv->remain_on_ch_timer);
wilc_set_wfi_drv_handler(NULL); wilc_set_wfi_drv_handler(vif, NULL);
down(&hif_sema_driver); down(&hif_sema_driver);
if (hif_drv->usr_scan_req.scan_result) { if (hif_drv->usr_scan_req.scan_result) {
...@@ -3930,6 +3967,7 @@ s32 wilc_deinit(struct host_if_drv *hif_drv) ...@@ -3930,6 +3967,7 @@ s32 wilc_deinit(struct host_if_drv *hif_drv)
msg.id = HOST_IF_MSG_EXIT; msg.id = HOST_IF_MSG_EXIT;
msg.drv = hif_drv; msg.drv = hif_drv;
msg.vif = vif;
result = wilc_mq_send(&hif_msg_q, &msg, sizeof(struct host_if_msg)); result = wilc_mq_send(&hif_msg_q, &msg, sizeof(struct host_if_msg));
if (result != 0) if (result != 0)
...@@ -4051,11 +4089,11 @@ void wilc_scan_complete_received(u8 *pu8Buffer, u32 u32Length) ...@@ -4051,11 +4089,11 @@ void wilc_scan_complete_received(u8 *pu8Buffer, u32 u32Length)
return; return;
} }
s32 wilc_remain_on_channel(struct host_if_drv *hif_drv, u32 u32SessionID, s32 wilc_remain_on_channel(struct wilc_vif *vif, struct host_if_drv *hif_drv,
u32 u32duration, u16 chan, u32 u32SessionID, u32 u32duration, u16 chan,
wilc_remain_on_chan_expired RemainOnChanExpired, wilc_remain_on_chan_expired RemainOnChanExpired,
wilc_remain_on_chan_ready RemainOnChanReady, wilc_remain_on_chan_ready RemainOnChanReady,
void *pvUserArg) void *pvUserArg)
{ {
s32 result = 0; s32 result = 0;
struct host_if_msg msg; struct host_if_msg msg;
...@@ -4075,6 +4113,7 @@ s32 wilc_remain_on_channel(struct host_if_drv *hif_drv, u32 u32SessionID, ...@@ -4075,6 +4113,7 @@ s32 wilc_remain_on_channel(struct host_if_drv *hif_drv, u32 u32SessionID,
msg.body.remain_on_ch.u32duration = u32duration; msg.body.remain_on_ch.u32duration = u32duration;
msg.body.remain_on_ch.id = u32SessionID; msg.body.remain_on_ch.id = u32SessionID;
msg.drv = hif_drv; msg.drv = hif_drv;
msg.vif = vif;
result = wilc_mq_send(&hif_msg_q, &msg, sizeof(struct host_if_msg)); result = wilc_mq_send(&hif_msg_q, &msg, sizeof(struct host_if_msg));
if (result) if (result)
...@@ -4083,7 +4122,8 @@ s32 wilc_remain_on_channel(struct host_if_drv *hif_drv, u32 u32SessionID, ...@@ -4083,7 +4122,8 @@ s32 wilc_remain_on_channel(struct host_if_drv *hif_drv, u32 u32SessionID,
return result; return result;
} }
s32 wilc_listen_state_expired(struct host_if_drv *hif_drv, u32 u32SessionID) s32 wilc_listen_state_expired(struct wilc_vif *vif,
struct host_if_drv *hif_drv, u32 u32SessionID)
{ {
s32 result = 0; s32 result = 0;
struct host_if_msg msg; struct host_if_msg msg;
...@@ -4098,6 +4138,7 @@ s32 wilc_listen_state_expired(struct host_if_drv *hif_drv, u32 u32SessionID) ...@@ -4098,6 +4138,7 @@ s32 wilc_listen_state_expired(struct host_if_drv *hif_drv, u32 u32SessionID)
memset(&msg, 0, sizeof(struct host_if_msg)); memset(&msg, 0, sizeof(struct host_if_msg));
msg.id = HOST_IF_MSG_LISTEN_TIMER_FIRED; msg.id = HOST_IF_MSG_LISTEN_TIMER_FIRED;
msg.drv = hif_drv; msg.drv = hif_drv;
msg.vif = vif;
msg.body.remain_on_ch.id = u32SessionID; msg.body.remain_on_ch.id = u32SessionID;
result = wilc_mq_send(&hif_msg_q, &msg, sizeof(struct host_if_msg)); result = wilc_mq_send(&hif_msg_q, &msg, sizeof(struct host_if_msg));
...@@ -4107,7 +4148,8 @@ s32 wilc_listen_state_expired(struct host_if_drv *hif_drv, u32 u32SessionID) ...@@ -4107,7 +4148,8 @@ s32 wilc_listen_state_expired(struct host_if_drv *hif_drv, u32 u32SessionID)
return result; return result;
} }
s32 wilc_frame_register(struct host_if_drv *hif_drv, u16 u16FrameType, bool bReg) s32 wilc_frame_register(struct wilc_vif *vif, struct host_if_drv *hif_drv,
u16 u16FrameType, bool bReg)
{ {
s32 result = 0; s32 result = 0;
struct host_if_msg msg; struct host_if_msg msg;
...@@ -4138,6 +4180,7 @@ s32 wilc_frame_register(struct host_if_drv *hif_drv, u16 u16FrameType, bool bReg ...@@ -4138,6 +4180,7 @@ s32 wilc_frame_register(struct host_if_drv *hif_drv, u16 u16FrameType, bool bReg
msg.body.reg_frame.frame_type = u16FrameType; msg.body.reg_frame.frame_type = u16FrameType;
msg.body.reg_frame.reg = bReg; msg.body.reg_frame.reg = bReg;
msg.drv = hif_drv; msg.drv = hif_drv;
msg.vif = vif;
result = wilc_mq_send(&hif_msg_q, &msg, sizeof(struct host_if_msg)); result = wilc_mq_send(&hif_msg_q, &msg, sizeof(struct host_if_msg));
if (result) if (result)
...@@ -4146,9 +4189,10 @@ s32 wilc_frame_register(struct host_if_drv *hif_drv, u16 u16FrameType, bool bReg ...@@ -4146,9 +4189,10 @@ s32 wilc_frame_register(struct host_if_drv *hif_drv, u16 u16FrameType, bool bReg
return result; return result;
} }
s32 wilc_add_beacon(struct host_if_drv *hif_drv, u32 u32Interval, s32 wilc_add_beacon(struct wilc_vif *vif, struct host_if_drv *hif_drv,
u32 u32DTIMPeriod, u32 u32HeadLen, u8 *pu8Head, u32 u32Interval,
u32 u32TailLen, u8 *pu8Tail) u32 u32DTIMPeriod, u32 u32HeadLen, u8 *pu8Head,
u32 u32TailLen, u8 *pu8Tail)
{ {
s32 result = 0; s32 result = 0;
struct host_if_msg msg; struct host_if_msg msg;
...@@ -4165,6 +4209,7 @@ s32 wilc_add_beacon(struct host_if_drv *hif_drv, u32 u32Interval, ...@@ -4165,6 +4209,7 @@ s32 wilc_add_beacon(struct host_if_drv *hif_drv, u32 u32Interval,
msg.id = HOST_IF_MSG_ADD_BEACON; msg.id = HOST_IF_MSG_ADD_BEACON;
msg.drv = hif_drv; msg.drv = hif_drv;
msg.vif = vif;
pstrSetBeaconParam->interval = u32Interval; pstrSetBeaconParam->interval = u32Interval;
pstrSetBeaconParam->dtim_period = u32DTIMPeriod; pstrSetBeaconParam->dtim_period = u32DTIMPeriod;
pstrSetBeaconParam->head_len = u32HeadLen; pstrSetBeaconParam->head_len = u32HeadLen;
...@@ -4200,7 +4245,7 @@ s32 wilc_add_beacon(struct host_if_drv *hif_drv, u32 u32Interval, ...@@ -4200,7 +4245,7 @@ s32 wilc_add_beacon(struct host_if_drv *hif_drv, u32 u32Interval,
return result; return result;
} }
int wilc_del_beacon(struct host_if_drv *hif_drv) int wilc_del_beacon(struct wilc_vif *vif, struct host_if_drv *hif_drv)
{ {
int result = 0; int result = 0;
struct host_if_msg msg; struct host_if_msg msg;
...@@ -4212,6 +4257,7 @@ int wilc_del_beacon(struct host_if_drv *hif_drv) ...@@ -4212,6 +4257,7 @@ int wilc_del_beacon(struct host_if_drv *hif_drv)
msg.id = HOST_IF_MSG_DEL_BEACON; msg.id = HOST_IF_MSG_DEL_BEACON;
msg.drv = hif_drv; msg.drv = hif_drv;
msg.vif = vif;
PRINT_D(HOSTINF_DBG, "Setting deleting beacon message queue params\n"); PRINT_D(HOSTINF_DBG, "Setting deleting beacon message queue params\n");
result = wilc_mq_send(&hif_msg_q, &msg, sizeof(struct host_if_msg)); result = wilc_mq_send(&hif_msg_q, &msg, sizeof(struct host_if_msg));
...@@ -4221,7 +4267,7 @@ int wilc_del_beacon(struct host_if_drv *hif_drv) ...@@ -4221,7 +4267,7 @@ int wilc_del_beacon(struct host_if_drv *hif_drv)
return result; return result;
} }
int wilc_add_station(struct host_if_drv *hif_drv, int wilc_add_station(struct wilc_vif *vif, struct host_if_drv *hif_drv,
struct add_sta_param *sta_param) struct add_sta_param *sta_param)
{ {
int result = 0; int result = 0;
...@@ -4239,6 +4285,7 @@ int wilc_add_station(struct host_if_drv *hif_drv, ...@@ -4239,6 +4285,7 @@ int wilc_add_station(struct host_if_drv *hif_drv,
msg.id = HOST_IF_MSG_ADD_STATION; msg.id = HOST_IF_MSG_ADD_STATION;
msg.drv = hif_drv; msg.drv = hif_drv;
msg.vif = vif;
memcpy(add_sta_info, sta_param, sizeof(struct add_sta_param)); memcpy(add_sta_info, sta_param, sizeof(struct add_sta_param));
if (add_sta_info->rates_len > 0) { if (add_sta_info->rates_len > 0) {
...@@ -4255,7 +4302,8 @@ int wilc_add_station(struct host_if_drv *hif_drv, ...@@ -4255,7 +4302,8 @@ int wilc_add_station(struct host_if_drv *hif_drv,
return result; return result;
} }
int wilc_del_station(struct host_if_drv *hif_drv, const u8 *mac_addr) int wilc_del_station(struct wilc_vif *vif, struct host_if_drv *hif_drv,
const u8 *mac_addr)
{ {
int result = 0; int result = 0;
struct host_if_msg msg; struct host_if_msg msg;
...@@ -4272,6 +4320,7 @@ int wilc_del_station(struct host_if_drv *hif_drv, const u8 *mac_addr) ...@@ -4272,6 +4320,7 @@ int wilc_del_station(struct host_if_drv *hif_drv, const u8 *mac_addr)
msg.id = HOST_IF_MSG_DEL_STATION; msg.id = HOST_IF_MSG_DEL_STATION;
msg.drv = hif_drv; msg.drv = hif_drv;
msg.vif = vif;
if (!mac_addr) if (!mac_addr)
eth_broadcast_addr(del_sta_info->mac_addr); eth_broadcast_addr(del_sta_info->mac_addr);
...@@ -4284,7 +4333,7 @@ int wilc_del_station(struct host_if_drv *hif_drv, const u8 *mac_addr) ...@@ -4284,7 +4333,7 @@ int wilc_del_station(struct host_if_drv *hif_drv, const u8 *mac_addr)
return result; return result;
} }
s32 wilc_del_allstation(struct host_if_drv *hif_drv, s32 wilc_del_allstation(struct wilc_vif *vif, struct host_if_drv *hif_drv,
u8 pu8MacAddr[][ETH_ALEN]) u8 pu8MacAddr[][ETH_ALEN])
{ {
s32 result = 0; s32 result = 0;
...@@ -4305,6 +4354,7 @@ s32 wilc_del_allstation(struct host_if_drv *hif_drv, ...@@ -4305,6 +4354,7 @@ s32 wilc_del_allstation(struct host_if_drv *hif_drv,
msg.id = HOST_IF_MSG_DEL_ALL_STA; msg.id = HOST_IF_MSG_DEL_ALL_STA;
msg.drv = hif_drv; msg.drv = hif_drv;
msg.vif = vif;
for (i = 0; i < MAX_NUM_STA; i++) { for (i = 0; i < MAX_NUM_STA; i++) {
if (memcmp(pu8MacAddr[i], au8Zero_Buff, ETH_ALEN)) { if (memcmp(pu8MacAddr[i], au8Zero_Buff, ETH_ALEN)) {
...@@ -4335,7 +4385,7 @@ s32 wilc_del_allstation(struct host_if_drv *hif_drv, ...@@ -4335,7 +4385,7 @@ s32 wilc_del_allstation(struct host_if_drv *hif_drv,
return result; return result;
} }
s32 wilc_edit_station(struct host_if_drv *hif_drv, s32 wilc_edit_station(struct wilc_vif *vif, struct host_if_drv *hif_drv,
struct add_sta_param *pstrStaParams) struct add_sta_param *pstrStaParams)
{ {
s32 result = 0; s32 result = 0;
...@@ -4353,6 +4403,7 @@ s32 wilc_edit_station(struct host_if_drv *hif_drv, ...@@ -4353,6 +4403,7 @@ s32 wilc_edit_station(struct host_if_drv *hif_drv,
msg.id = HOST_IF_MSG_EDIT_STATION; msg.id = HOST_IF_MSG_EDIT_STATION;
msg.drv = hif_drv; msg.drv = hif_drv;
msg.vif = vif;
memcpy(pstrAddStationMsg, pstrStaParams, sizeof(struct add_sta_param)); memcpy(pstrAddStationMsg, pstrStaParams, sizeof(struct add_sta_param));
if (pstrAddStationMsg->rates_len > 0) { if (pstrAddStationMsg->rates_len > 0) {
...@@ -4373,9 +4424,8 @@ s32 wilc_edit_station(struct host_if_drv *hif_drv, ...@@ -4373,9 +4424,8 @@ s32 wilc_edit_station(struct host_if_drv *hif_drv,
return result; return result;
} }
s32 wilc_set_power_mgmt(struct host_if_drv *hif_drv, s32 wilc_set_power_mgmt(struct wilc_vif *vif, struct host_if_drv *hif_drv,
bool bIsEnabled, bool bIsEnabled, u32 u32Timeout)
u32 u32Timeout)
{ {
s32 result = 0; s32 result = 0;
struct host_if_msg msg; struct host_if_msg msg;
...@@ -4394,6 +4444,7 @@ s32 wilc_set_power_mgmt(struct host_if_drv *hif_drv, ...@@ -4394,6 +4444,7 @@ s32 wilc_set_power_mgmt(struct host_if_drv *hif_drv,
msg.id = HOST_IF_MSG_POWER_MGMT; msg.id = HOST_IF_MSG_POWER_MGMT;
msg.drv = hif_drv; msg.drv = hif_drv;
msg.vif = vif;
pstrPowerMgmtParam->enabled = bIsEnabled; pstrPowerMgmtParam->enabled = bIsEnabled;
pstrPowerMgmtParam->timeout = u32Timeout; pstrPowerMgmtParam->timeout = u32Timeout;
...@@ -4404,9 +4455,10 @@ s32 wilc_set_power_mgmt(struct host_if_drv *hif_drv, ...@@ -4404,9 +4455,10 @@ s32 wilc_set_power_mgmt(struct host_if_drv *hif_drv,
return result; return result;
} }
s32 wilc_setup_multicast_filter(struct host_if_drv *hif_drv, s32 wilc_setup_multicast_filter(struct wilc_vif *vif,
bool bIsEnabled, struct host_if_drv *hif_drv,
u32 u32count) bool bIsEnabled,
u32 u32count)
{ {
s32 result = 0; s32 result = 0;
struct host_if_msg msg; struct host_if_msg msg;
...@@ -4423,6 +4475,7 @@ s32 wilc_setup_multicast_filter(struct host_if_drv *hif_drv, ...@@ -4423,6 +4475,7 @@ s32 wilc_setup_multicast_filter(struct host_if_drv *hif_drv,
msg.id = HOST_IF_MSG_SET_MULTICAST_FILTER; msg.id = HOST_IF_MSG_SET_MULTICAST_FILTER;
msg.drv = hif_drv; msg.drv = hif_drv;
msg.vif = vif;
pstrMulticastFilterParam->enabled = bIsEnabled; pstrMulticastFilterParam->enabled = bIsEnabled;
pstrMulticastFilterParam->cnt = u32count; pstrMulticastFilterParam->cnt = u32count;
...@@ -4598,9 +4651,10 @@ void wilc_free_join_params(void *pJoinParams) ...@@ -4598,9 +4651,10 @@ void wilc_free_join_params(void *pJoinParams)
PRINT_ER("Unable to FREE null pointer\n"); PRINT_ER("Unable to FREE null pointer\n");
} }
s32 wilc_del_all_rx_ba_session(struct host_if_drv *hif_drv, s32 wilc_del_all_rx_ba_session(struct wilc_vif *vif,
char *pBSSID, struct host_if_drv *hif_drv,
char TID) char *pBSSID,
char TID)
{ {
s32 result = 0; s32 result = 0;
struct host_if_msg msg; struct host_if_msg msg;
...@@ -4618,6 +4672,7 @@ s32 wilc_del_all_rx_ba_session(struct host_if_drv *hif_drv, ...@@ -4618,6 +4672,7 @@ s32 wilc_del_all_rx_ba_session(struct host_if_drv *hif_drv,
memcpy(pBASessionInfo->bssid, pBSSID, ETH_ALEN); memcpy(pBASessionInfo->bssid, pBSSID, ETH_ALEN);
pBASessionInfo->tid = TID; pBASessionInfo->tid = TID;
msg.drv = hif_drv; msg.drv = hif_drv;
msg.vif = vif;
result = wilc_mq_send(&hif_msg_q, &msg, sizeof(struct host_if_msg)); result = wilc_mq_send(&hif_msg_q, &msg, sizeof(struct host_if_msg));
if (result) if (result)
...@@ -4628,7 +4683,8 @@ s32 wilc_del_all_rx_ba_session(struct host_if_drv *hif_drv, ...@@ -4628,7 +4683,8 @@ s32 wilc_del_all_rx_ba_session(struct host_if_drv *hif_drv,
return result; return result;
} }
s32 wilc_setup_ipaddress(struct host_if_drv *hif_drv, u8 *u16ipadd, u8 idx) s32 wilc_setup_ipaddress(struct wilc_vif *vif, struct host_if_drv *hif_drv,
u8 *u16ipadd, u8 idx)
{ {
s32 result = 0; s32 result = 0;
struct host_if_msg msg; struct host_if_msg msg;
...@@ -4646,6 +4702,7 @@ s32 wilc_setup_ipaddress(struct host_if_drv *hif_drv, u8 *u16ipadd, u8 idx) ...@@ -4646,6 +4702,7 @@ s32 wilc_setup_ipaddress(struct host_if_drv *hif_drv, u8 *u16ipadd, u8 idx)
msg.body.ip_info.ip_addr = u16ipadd; msg.body.ip_info.ip_addr = u16ipadd;
msg.drv = hif_drv; msg.drv = hif_drv;
msg.vif = vif;
msg.body.ip_info.idx = idx; msg.body.ip_info.idx = idx;
result = wilc_mq_send(&hif_msg_q, &msg, sizeof(struct host_if_msg)); result = wilc_mq_send(&hif_msg_q, &msg, sizeof(struct host_if_msg));
...@@ -4655,7 +4712,9 @@ s32 wilc_setup_ipaddress(struct host_if_drv *hif_drv, u8 *u16ipadd, u8 idx) ...@@ -4655,7 +4712,9 @@ s32 wilc_setup_ipaddress(struct host_if_drv *hif_drv, u8 *u16ipadd, u8 idx)
return result; return result;
} }
static s32 host_int_get_ipaddress(struct host_if_drv *hif_drv, u8 *u16ipadd, u8 idx) static s32 host_int_get_ipaddress(struct wilc_vif *vif,
struct host_if_drv *hif_drv,
u8 *u16ipadd, u8 idx)
{ {
s32 result = 0; s32 result = 0;
struct host_if_msg msg; struct host_if_msg msg;
...@@ -4671,6 +4730,7 @@ static s32 host_int_get_ipaddress(struct host_if_drv *hif_drv, u8 *u16ipadd, u8 ...@@ -4671,6 +4730,7 @@ static s32 host_int_get_ipaddress(struct host_if_drv *hif_drv, u8 *u16ipadd, u8
msg.body.ip_info.ip_addr = u16ipadd; msg.body.ip_info.ip_addr = u16ipadd;
msg.drv = hif_drv; msg.drv = hif_drv;
msg.vif = vif;
msg.body.ip_info.idx = idx; msg.body.ip_info.idx = idx;
result = wilc_mq_send(&hif_msg_q, &msg, sizeof(struct host_if_msg)); result = wilc_mq_send(&hif_msg_q, &msg, sizeof(struct host_if_msg));
......
...@@ -305,97 +305,104 @@ struct add_sta_param { ...@@ -305,97 +305,104 @@ struct add_sta_param {
u16 flags_set; u16 flags_set;
}; };
struct wilc_vif;
s32 wilc_remove_key(struct host_if_drv *hWFIDrv, const u8 *pu8StaAddress); s32 wilc_remove_key(struct host_if_drv *hWFIDrv, const u8 *pu8StaAddress);
int wilc_remove_wep_key(struct host_if_drv *wfi_drv, u8 index); int wilc_remove_wep_key(struct wilc_vif *vif,
int wilc_set_wep_default_keyid(struct host_if_drv *hif_drv, u8 index); struct host_if_drv *hif_drv, u8 index);
int wilc_add_wep_key_bss_sta(struct host_if_drv *hif_drv, int wilc_set_wep_default_keyid(struct wilc_vif *vif,
const u8 *key, u8 len, u8 index); struct host_if_drv *hif_drv, u8 index);
int wilc_add_wep_key_bss_ap(struct host_if_drv *hif_drv, int wilc_add_wep_key_bss_sta(struct wilc_vif *vif, struct host_if_drv *hif_drv,
const u8 *key, u8 len, u8 index, u8 mode, const u8 *key, u8 len, u8 index);
enum AUTHTYPE auth_type); int wilc_add_wep_key_bss_ap(struct wilc_vif *vif, struct host_if_drv *hif_drv,
s32 wilc_add_ptk(struct host_if_drv *hWFIDrv, const u8 *pu8Ptk, const u8 *key, u8 len, u8 index, u8 mode,
u8 u8PtkKeylen, const u8 *mac_addr, enum AUTHTYPE auth_type);
const u8 *pu8RxMic, const u8 *pu8TxMic, s32 wilc_add_ptk(struct wilc_vif *vif, struct host_if_drv *hif_drv,
u8 mode, u8 u8Ciphermode, u8 u8Idx); const u8 *pu8Ptk, u8 u8PtkKeylen, const u8 *mac_addr,
s32 wilc_get_inactive_time(struct host_if_drv *hWFIDrv, const u8 *mac, const u8 *pu8RxMic, const u8 *pu8TxMic,
u32 *pu32InactiveTime); u8 mode, u8 u8Ciphermode, u8 u8Idx);
s32 wilc_add_rx_gtk(struct host_if_drv *hWFIDrv, const u8 *pu8RxGtk, s32 wilc_get_inactive_time(struct wilc_vif *vif, struct host_if_drv *hif_drv,
u8 u8GtkKeylen, u8 u8KeyIdx, const u8 *mac, u32 *pu32InactiveTime);
u32 u32KeyRSClen, const u8 *KeyRSC, s32 wilc_add_rx_gtk(struct wilc_vif *vif, struct host_if_drv *hif_drv,
const u8 *pu8RxMic, const u8 *pu8TxMic, const u8 *pu8RxGtk, u8 u8GtkKeylen, u8 u8KeyIdx,
u8 mode, u8 u8Ciphermode); u32 u32KeyRSClen, const u8 *KeyRSC,
const u8 *pu8RxMic, const u8 *pu8TxMic,
u8 mode, u8 u8Ciphermode);
s32 wilc_add_tx_gtk(struct host_if_drv *hWFIDrv, u8 u8KeyLen, s32 wilc_add_tx_gtk(struct host_if_drv *hWFIDrv, u8 u8KeyLen,
u8 *pu8TxGtk, u8 u8KeyIdx); u8 *pu8TxGtk, u8 u8KeyIdx);
s32 wilc_set_pmkid_info(struct host_if_drv *hWFIDrv, s32 wilc_set_pmkid_info(struct wilc_vif *vif, struct host_if_drv *hif_drv,
struct host_if_pmkid_attr *pu8PmkidInfoArray); struct host_if_pmkid_attr *pu8PmkidInfoArray);
s32 wilc_get_mac_address(struct host_if_drv *hWFIDrv, u8 *pu8MacAddress); s32 wilc_get_mac_address(struct wilc_vif *vif, struct host_if_drv *hif_drv,
s32 wilc_set_mac_address(struct host_if_drv *hWFIDrv, u8 *pu8MacAddress); u8 *pu8MacAddress);
s32 wilc_set_mac_address(struct wilc_vif *vif, struct host_if_drv *hif_drv,
u8 *pu8MacAddress);
int wilc_wait_msg_queue_idle(void); int wilc_wait_msg_queue_idle(void);
s32 wilc_set_start_scan_req(struct host_if_drv *hWFIDrv, u8 scanSource); s32 wilc_set_start_scan_req(struct host_if_drv *hWFIDrv, u8 scanSource);
s32 wilc_set_join_req(struct host_if_drv *hWFIDrv, u8 *pu8bssid, s32 wilc_set_join_req(struct wilc_vif *vif, struct host_if_drv *hif_drv,
const u8 *pu8ssid, size_t ssidLen, u8 *pu8bssid, const u8 *pu8ssid, size_t ssidLen,
const u8 *pu8IEs, size_t IEsLen, const u8 *pu8IEs, size_t IEsLen,
wilc_connect_result pfConnectResult, void *pvUserArg, wilc_connect_result pfConnectResult, void *pvUserArg,
u8 u8security, enum AUTHTYPE tenuAuth_type, u8 u8security, enum AUTHTYPE tenuAuth_type,
u8 u8channel, void *pJoinParams); u8 u8channel, void *pJoinParams);
s32 wilc_flush_join_req(struct host_if_drv *hWFIDrv); s32 wilc_flush_join_req(struct wilc_vif *vif, struct host_if_drv *hif_drv);
s32 wilc_disconnect(struct host_if_drv *hWFIDrv, u16 u16ReasonCode); s32 wilc_disconnect(struct wilc_vif *vif, struct host_if_drv *hif_drv,
int wilc_set_mac_chnl_num(struct host_if_drv *wfi_drv, u8 channel); u16 u16ReasonCode);
s32 wilc_get_rssi(struct host_if_drv *hWFIDrv, s8 *ps8Rssi); int wilc_set_mac_chnl_num(struct wilc_vif *vif, struct host_if_drv *hif_drv,
s32 wilc_scan(struct host_if_drv *hWFIDrv, u8 u8ScanSource, u8 channel);
u8 u8ScanType, u8 *pu8ChnlFreqList, s32 wilc_get_rssi(struct wilc_vif *vif, struct host_if_drv *hif_drv,
u8 u8ChnlListLen, const u8 *pu8IEs, s8 *ps8Rssi);
size_t IEsLen, wilc_scan_result ScanResult, s32 wilc_scan(struct wilc_vif *vif, struct host_if_drv *hif_drv,
void *pvUserArg, struct hidden_network *pstrHiddenNetwork); u8 u8ScanSource, u8 u8ScanType, u8 *pu8ChnlFreqList,
s32 wilc_hif_set_cfg(struct host_if_drv *hWFIDrv, u8 u8ChnlListLen, const u8 *pu8IEs,
size_t IEsLen, wilc_scan_result ScanResult,
void *pvUserArg, struct hidden_network *pstrHiddenNetwork);
s32 wilc_hif_set_cfg(struct wilc_vif *vif, struct host_if_drv *hif_drv,
struct cfg_param_val *pstrCfgParamVal); struct cfg_param_val *pstrCfgParamVal);
s32 wilc_init(struct net_device *dev, struct host_if_drv **phWFIDrv); s32 wilc_init(struct net_device *dev, struct host_if_drv **phWFIDrv);
s32 wilc_deinit(struct host_if_drv *hWFIDrv); s32 wilc_deinit(struct wilc_vif *vif, struct host_if_drv *hif_drv);
s32 wilc_add_beacon(struct host_if_drv *hWFIDrv, u32 u32Interval, s32 wilc_add_beacon(struct wilc_vif *vif, struct host_if_drv *hif_drv,
u32 u32DTIMPeriod, u32 u32Interval,
u32 u32HeadLen, u32 u32DTIMPeriod, u32 u32HeadLen, u8 *pu8Head,
u8 *pu8Head, u32 u32TailLen, u8 *pu8Tail);
u32 u32TailLen, int wilc_del_beacon(struct wilc_vif *vif, struct host_if_drv *hif_drv);
u8 *pu8tail); int wilc_add_station(struct wilc_vif *vif, struct host_if_drv *hif_drv,
int wilc_del_beacon(struct host_if_drv *hif_drv); struct add_sta_param *sta_param);
int wilc_add_station(struct host_if_drv *hif_drv, s32 wilc_del_allstation(struct wilc_vif *vif, struct host_if_drv *hif_drv,
struct add_sta_param *sta_param);
s32 wilc_del_allstation(struct host_if_drv *hWFIDrv,
u8 pu8MacAddr[][ETH_ALEN]); u8 pu8MacAddr[][ETH_ALEN]);
int wilc_del_station(struct host_if_drv *hif_drv, const u8 *mac_addr); int wilc_del_station(struct wilc_vif *vif, struct host_if_drv *hif_drv,
s32 wilc_edit_station(struct host_if_drv *hWFIDrv, const u8 *mac_addr);
s32 wilc_edit_station(struct wilc_vif *vif, struct host_if_drv *hif_drv,
struct add_sta_param *pstrStaParams); struct add_sta_param *pstrStaParams);
s32 wilc_set_power_mgmt(struct host_if_drv *hWFIDrv, s32 wilc_set_power_mgmt(struct wilc_vif *vif, struct host_if_drv *hif_drv,
bool bIsEnabled, bool bIsEnabled, u32 u32Timeout);
u32 u32Timeout); s32 wilc_setup_multicast_filter(struct wilc_vif *vif,
s32 wilc_setup_multicast_filter(struct host_if_drv *hWFIDrv, struct host_if_drv *hif_drv,
bool bIsEnabled, bool bIsEnabled,
u32 u32count); u32 u32count);
s32 wilc_setup_ipaddress(struct host_if_drv *hWFIDrv, s32 wilc_setup_ipaddress(struct wilc_vif *vif, struct host_if_drv *hif_drv,
u8 *pu8IPAddr, u8 *u16ipadd, u8 idx);
u8 idx); s32 wilc_del_all_rx_ba_session(struct wilc_vif *vif,
s32 wilc_del_all_rx_ba_session(struct host_if_drv *hWFIDrv, struct host_if_drv *hif_drv,
char *pBSSID, char *pBSSID,
char TID); char TID);
s32 wilc_remain_on_channel(struct host_if_drv *hWFIDrv, s32 wilc_remain_on_channel(struct wilc_vif *vif, struct host_if_drv *hif_drv,
u32 u32SessionID, u32 u32SessionID, u32 u32duration, u16 chan,
u32 u32duration, wilc_remain_on_chan_expired RemainOnChanExpired,
u16 chan, wilc_remain_on_chan_ready RemainOnChanReady,
wilc_remain_on_chan_expired RemainOnChanExpired, void *pvUserArg);
wilc_remain_on_chan_ready RemainOnChanReady, s32 wilc_listen_state_expired(struct wilc_vif *vif,
void *pvUserArg); struct host_if_drv *hif_drv, u32 u32SessionID);
s32 wilc_listen_state_expired(struct host_if_drv *hWFIDrv, u32 u32SessionID); s32 wilc_frame_register(struct wilc_vif *vif, struct host_if_drv *hif_drv,
s32 wilc_frame_register(struct host_if_drv *hWFIDrv, u16 u16FrameType, bool bReg);
u16 u16FrameType, int wilc_set_wfi_drv_handler(struct wilc_vif *vif, struct host_if_drv *hif_drv);
bool bReg); int wilc_set_operation_mode(struct wilc_vif *vif, struct host_if_drv *hif_drv,
int wilc_set_wfi_drv_handler(struct host_if_drv *address); u32 mode);
int wilc_set_operation_mode(struct host_if_drv *wfi_drv, u32 mode);
void wilc_free_join_params(void *pJoinParams); void wilc_free_join_params(void *pJoinParams);
s32 wilc_get_statistics(struct host_if_drv *hWFIDrv, s32 wilc_get_statistics(struct wilc_vif *vif, struct host_if_drv *hif_drv,
struct rf_info *pstrStatistics); struct rf_info *pstrStatistics);
void wilc_resolve_disconnect_aberration(struct host_if_drv *hif_drv); void wilc_resolve_disconnect_aberration(struct wilc_vif *vif,
struct host_if_drv *hif_drv);
extern bool wilc_optaining_ip; extern bool wilc_optaining_ip;
extern u8 wilc_connected_ssid[6]; extern u8 wilc_connected_ssid[6];
......
...@@ -112,7 +112,7 @@ static int dev_state_ev_handler(struct notifier_block *this, unsigned long event ...@@ -112,7 +112,7 @@ static int dev_state_ev_handler(struct notifier_block *this, unsigned long event
} }
if (wilc_enable_ps) if (wilc_enable_ps)
wilc_set_power_mgmt(hif_drv, 1, 0); wilc_set_power_mgmt(vif, hif_drv, 1, 0);
PRINT_D(GENERIC_DBG, "[%s] Up IP\n", dev_iface->ifa_label); PRINT_D(GENERIC_DBG, "[%s] Up IP\n", dev_iface->ifa_label);
...@@ -120,7 +120,7 @@ static int dev_state_ev_handler(struct notifier_block *this, unsigned long event ...@@ -120,7 +120,7 @@ static int dev_state_ev_handler(struct notifier_block *this, unsigned long event
PRINT_D(GENERIC_DBG, "IP add=%d:%d:%d:%d\n", PRINT_D(GENERIC_DBG, "IP add=%d:%d:%d:%d\n",
ip_addr_buf[0], ip_addr_buf[1], ip_addr_buf[0], ip_addr_buf[1],
ip_addr_buf[2], ip_addr_buf[3]); ip_addr_buf[2], ip_addr_buf[3]);
wilc_setup_ipaddress(hif_drv, ip_addr_buf, vif->u8IfIdx); wilc_setup_ipaddress(vif, hif_drv, ip_addr_buf, vif->u8IfIdx);
break; break;
...@@ -134,9 +134,9 @@ static int dev_state_ev_handler(struct notifier_block *this, unsigned long event ...@@ -134,9 +134,9 @@ static int dev_state_ev_handler(struct notifier_block *this, unsigned long event
} }
if (memcmp(dev_iface->ifa_label, wlan_dev_name, 5) == 0) if (memcmp(dev_iface->ifa_label, wlan_dev_name, 5) == 0)
wilc_set_power_mgmt(hif_drv, 0, 0); wilc_set_power_mgmt(vif, hif_drv, 0, 0);
wilc_resolve_disconnect_aberration(hif_drv); wilc_resolve_disconnect_aberration(vif, hif_drv);
PRINT_D(GENERIC_DBG, "[%s] Down IP\n", dev_iface->ifa_label); PRINT_D(GENERIC_DBG, "[%s] Down IP\n", dev_iface->ifa_label);
...@@ -145,7 +145,7 @@ static int dev_state_ev_handler(struct notifier_block *this, unsigned long event ...@@ -145,7 +145,7 @@ static int dev_state_ev_handler(struct notifier_block *this, unsigned long event
ip_addr_buf[0], ip_addr_buf[1], ip_addr_buf[0], ip_addr_buf[1],
ip_addr_buf[2], ip_addr_buf[3]); ip_addr_buf[2], ip_addr_buf[3]);
wilc_setup_ipaddress(hif_drv, ip_addr_buf, vif->u8IfIdx); wilc_setup_ipaddress(vif, hif_drv, ip_addr_buf, vif->u8IfIdx);
break; break;
...@@ -1030,7 +1030,7 @@ int wilc_mac_open(struct net_device *ndev) ...@@ -1030,7 +1030,7 @@ int wilc_mac_open(struct net_device *ndev)
wilc_set_machw_change_vir_if(ndev, false); wilc_set_machw_change_vir_if(ndev, false);
wilc_get_mac_address(priv->hWILCWFIDrv, mac_add); wilc_get_mac_address(vif, priv->hWILCWFIDrv, mac_add);
PRINT_D(INIT_DBG, "Mac address: %pM\n", mac_add); PRINT_D(INIT_DBG, "Mac address: %pM\n", mac_add);
for (i = 0; i < wl->vif_num; i++) { for (i = 0; i < wl->vif_num; i++) {
...@@ -1076,9 +1076,11 @@ static void wilc_set_multicast_list(struct net_device *dev) ...@@ -1076,9 +1076,11 @@ static void wilc_set_multicast_list(struct net_device *dev)
struct netdev_hw_addr *ha; struct netdev_hw_addr *ha;
struct wilc_priv *priv; struct wilc_priv *priv;
struct host_if_drv *hif_drv; struct host_if_drv *hif_drv;
struct wilc_vif *vif;
int i = 0; int i = 0;
priv = wiphy_priv(dev->ieee80211_ptr->wiphy); priv = wiphy_priv(dev->ieee80211_ptr->wiphy);
vif = netdev_priv(dev);
hif_drv = (struct host_if_drv *)priv->hWILCWFIDrv; hif_drv = (struct host_if_drv *)priv->hWILCWFIDrv;
if (!dev) if (!dev)
...@@ -1095,13 +1097,13 @@ static void wilc_set_multicast_list(struct net_device *dev) ...@@ -1095,13 +1097,13 @@ static void wilc_set_multicast_list(struct net_device *dev)
if ((dev->flags & IFF_ALLMULTI) || if ((dev->flags & IFF_ALLMULTI) ||
(dev->mc.count) > WILC_MULTICAST_TABLE_SIZE) { (dev->mc.count) > WILC_MULTICAST_TABLE_SIZE) {
PRINT_D(INIT_DBG, "Disable multicast filter, retrive all multicast packets\n"); PRINT_D(INIT_DBG, "Disable multicast filter, retrive all multicast packets\n");
wilc_setup_multicast_filter(hif_drv, false, 0); wilc_setup_multicast_filter(vif, hif_drv, false, 0);
return; return;
} }
if ((dev->mc.count) == 0) { if ((dev->mc.count) == 0) {
PRINT_D(INIT_DBG, "Enable multicast filter, retrive directed packets only.\n"); PRINT_D(INIT_DBG, "Enable multicast filter, retrive directed packets only.\n");
wilc_setup_multicast_filter(hif_drv, true, 0); wilc_setup_multicast_filter(vif, hif_drv, true, 0);
return; return;
} }
...@@ -1117,7 +1119,7 @@ static void wilc_set_multicast_list(struct net_device *dev) ...@@ -1117,7 +1119,7 @@ static void wilc_set_multicast_list(struct net_device *dev)
i++; i++;
} }
wilc_setup_multicast_filter(hif_drv, true, (dev->mc.count)); wilc_setup_multicast_filter(vif, hif_drv, true, (dev->mc.count));
return; return;
} }
...@@ -1289,7 +1291,7 @@ static int mac_ioctl(struct net_device *ndev, struct ifreq *req, int cmd) ...@@ -1289,7 +1291,7 @@ static int mac_ioctl(struct net_device *ndev, struct ifreq *req, int cmd)
if (strncasecmp(buff, "RSSI", length) == 0) { if (strncasecmp(buff, "RSSI", length) == 0) {
priv = wiphy_priv(vif->ndev->ieee80211_ptr->wiphy); priv = wiphy_priv(vif->ndev->ieee80211_ptr->wiphy);
ret = wilc_get_rssi(priv->hWILCWFIDrv, &rssi); ret = wilc_get_rssi(vif, priv->hWILCWFIDrv, &rssi);
if (ret) if (ret)
PRINT_ER("Failed to send get rssi param's message queue "); PRINT_ER("Failed to send get rssi param's message queue ");
PRINT_INFO(GENERIC_DBG, "RSSI :%d\n", rssi); PRINT_INFO(GENERIC_DBG, "RSSI :%d\n", rssi);
......
...@@ -595,14 +595,16 @@ static int set_channel(struct wiphy *wiphy, ...@@ -595,14 +595,16 @@ static int set_channel(struct wiphy *wiphy,
u32 channelnum = 0; u32 channelnum = 0;
struct wilc_priv *priv; struct wilc_priv *priv;
int result = 0; int result = 0;
struct wilc_vif *vif;
priv = wiphy_priv(wiphy); priv = wiphy_priv(wiphy);
vif = netdev_priv(priv->dev);
channelnum = ieee80211_frequency_to_channel(chandef->chan->center_freq); channelnum = ieee80211_frequency_to_channel(chandef->chan->center_freq);
PRINT_D(CFG80211_DBG, "Setting channel %d with frequency %d\n", channelnum, chandef->chan->center_freq); PRINT_D(CFG80211_DBG, "Setting channel %d with frequency %d\n", channelnum, chandef->chan->center_freq);
curr_channel = channelnum; curr_channel = channelnum;
result = wilc_set_mac_chnl_num(priv->hWILCWFIDrv, channelnum); result = wilc_set_mac_chnl_num(vif, priv->hWILCWFIDrv, channelnum);
if (result != 0) if (result != 0)
PRINT_ER("Error in setting channel %d\n", channelnum); PRINT_ER("Error in setting channel %d\n", channelnum);
...@@ -617,14 +619,16 @@ static int scan(struct wiphy *wiphy, struct cfg80211_scan_request *request) ...@@ -617,14 +619,16 @@ static int scan(struct wiphy *wiphy, struct cfg80211_scan_request *request)
s32 s32Error = 0; s32 s32Error = 0;
u8 au8ScanChanList[MAX_NUM_SCANNED_NETWORKS]; u8 au8ScanChanList[MAX_NUM_SCANNED_NETWORKS];
struct hidden_network strHiddenNetwork; struct hidden_network strHiddenNetwork;
struct wilc_vif *vif;
priv = wiphy_priv(wiphy); priv = wiphy_priv(wiphy);
vif = netdev_priv(priv->dev);
priv->pstrScanReq = request; priv->pstrScanReq = request;
priv->u32RcvdChCount = 0; priv->u32RcvdChCount = 0;
wilc_set_wfi_drv_handler(priv->hWILCWFIDrv); wilc_set_wfi_drv_handler(vif, priv->hWILCWFIDrv);
reset_shadow_found(); reset_shadow_found();
priv->bCfgScanning = true; priv->bCfgScanning = true;
...@@ -656,13 +660,13 @@ static int scan(struct wiphy *wiphy, struct cfg80211_scan_request *request) ...@@ -656,13 +660,13 @@ static int scan(struct wiphy *wiphy, struct cfg80211_scan_request *request)
} }
} }
PRINT_D(CFG80211_DBG, "Trigger Scan Request\n"); PRINT_D(CFG80211_DBG, "Trigger Scan Request\n");
s32Error = wilc_scan(priv->hWILCWFIDrv, USER_SCAN, ACTIVE_SCAN, s32Error = wilc_scan(vif, priv->hWILCWFIDrv, USER_SCAN, ACTIVE_SCAN,
au8ScanChanList, request->n_channels, au8ScanChanList, request->n_channels,
(const u8 *)request->ie, request->ie_len, (const u8 *)request->ie, request->ie_len,
CfgScanResult, (void *)priv, &strHiddenNetwork); CfgScanResult, (void *)priv, &strHiddenNetwork);
} else { } else {
PRINT_D(CFG80211_DBG, "Trigger Scan Request\n"); PRINT_D(CFG80211_DBG, "Trigger Scan Request\n");
s32Error = wilc_scan(priv->hWILCWFIDrv, USER_SCAN, ACTIVE_SCAN, s32Error = wilc_scan(vif, priv->hWILCWFIDrv, USER_SCAN, ACTIVE_SCAN,
au8ScanChanList, request->n_channels, au8ScanChanList, request->n_channels,
(const u8 *)request->ie, request->ie_len, (const u8 *)request->ie, request->ie_len,
CfgScanResult, (void *)priv, NULL); CfgScanResult, (void *)priv, NULL);
...@@ -694,13 +698,14 @@ static int connect(struct wiphy *wiphy, struct net_device *dev, ...@@ -694,13 +698,14 @@ static int connect(struct wiphy *wiphy, struct net_device *dev,
struct wilc_priv *priv; struct wilc_priv *priv;
struct host_if_drv *pstrWFIDrv; struct host_if_drv *pstrWFIDrv;
tstrNetworkInfo *pstrNetworkInfo = NULL; tstrNetworkInfo *pstrNetworkInfo = NULL;
struct wilc_vif *vif;
wilc_connecting = 1; wilc_connecting = 1;
priv = wiphy_priv(wiphy); priv = wiphy_priv(wiphy);
vif = netdev_priv(priv->dev);
pstrWFIDrv = (struct host_if_drv *)(priv->hWILCWFIDrv); pstrWFIDrv = (struct host_if_drv *)(priv->hWILCWFIDrv);
wilc_set_wfi_drv_handler(priv->hWILCWFIDrv); wilc_set_wfi_drv_handler(vif, priv->hWILCWFIDrv);
PRINT_D(CFG80211_DBG, "Connecting to SSID [%s] on netdev [%p] host if [%p]\n", sme->ssid, dev, priv->hWILCWFIDrv); PRINT_D(CFG80211_DBG, "Connecting to SSID [%s] on netdev [%p] host if [%p]\n", sme->ssid, dev, priv->hWILCWFIDrv);
if (!(strncmp(sme->ssid, "DIRECT-", 7))) { if (!(strncmp(sme->ssid, "DIRECT-", 7))) {
...@@ -787,8 +792,8 @@ static int connect(struct wiphy *wiphy, struct net_device *dev, ...@@ -787,8 +792,8 @@ static int connect(struct wiphy *wiphy, struct net_device *dev,
g_key_wep_params.key_idx = sme->key_idx; g_key_wep_params.key_idx = sme->key_idx;
g_wep_keys_saved = true; g_wep_keys_saved = true;
wilc_set_wep_default_keyid(priv->hWILCWFIDrv, sme->key_idx); wilc_set_wep_default_keyid(vif, priv->hWILCWFIDrv, sme->key_idx);
wilc_add_wep_key_bss_sta(priv->hWILCWFIDrv, sme->key, sme->key_len, sme->key_idx); wilc_add_wep_key_bss_sta(vif, priv->hWILCWFIDrv, sme->key, sme->key_len, sme->key_idx);
} else if (sme->crypto.cipher_group == WLAN_CIPHER_SUITE_WEP104) { } else if (sme->crypto.cipher_group == WLAN_CIPHER_SUITE_WEP104) {
u8security = ENCRYPT_ENABLED | WEP | WEP_EXTENDED; u8security = ENCRYPT_ENABLED | WEP | WEP_EXTENDED;
pcgroup_encrypt_val = "WEP104"; pcgroup_encrypt_val = "WEP104";
...@@ -804,8 +809,8 @@ static int connect(struct wiphy *wiphy, struct net_device *dev, ...@@ -804,8 +809,8 @@ static int connect(struct wiphy *wiphy, struct net_device *dev,
g_key_wep_params.key_idx = sme->key_idx; g_key_wep_params.key_idx = sme->key_idx;
g_wep_keys_saved = true; g_wep_keys_saved = true;
wilc_set_wep_default_keyid(priv->hWILCWFIDrv, sme->key_idx); wilc_set_wep_default_keyid(vif, priv->hWILCWFIDrv, sme->key_idx);
wilc_add_wep_key_bss_sta(priv->hWILCWFIDrv, sme->key, sme->key_len, sme->key_idx); wilc_add_wep_key_bss_sta(vif, priv->hWILCWFIDrv, sme->key, sme->key_len, sme->key_idx);
} else if (sme->crypto.wpa_versions & NL80211_WPA_VERSION_2) { } else if (sme->crypto.wpa_versions & NL80211_WPA_VERSION_2) {
if (sme->crypto.cipher_group == WLAN_CIPHER_SUITE_TKIP) { if (sme->crypto.cipher_group == WLAN_CIPHER_SUITE_TKIP) {
u8security = ENCRYPT_ENABLED | WPA2 | TKIP; u8security = ENCRYPT_ENABLED | WPA2 | TKIP;
...@@ -890,7 +895,7 @@ static int connect(struct wiphy *wiphy, struct net_device *dev, ...@@ -890,7 +895,7 @@ static int connect(struct wiphy *wiphy, struct net_device *dev,
wilc_wlan_set_bssid(dev, pstrNetworkInfo->au8bssid); wilc_wlan_set_bssid(dev, pstrNetworkInfo->au8bssid);
s32Error = wilc_set_join_req(priv->hWILCWFIDrv, pstrNetworkInfo->au8bssid, sme->ssid, s32Error = wilc_set_join_req(vif, priv->hWILCWFIDrv, pstrNetworkInfo->au8bssid, sme->ssid,
sme->ssid_len, sme->ie, sme->ie_len, sme->ssid_len, sme->ie, sme->ie_len,
CfgConnectResult, (void *)priv, u8security, CfgConnectResult, (void *)priv, u8security,
tenuAuth_type, pstrNetworkInfo->u8channel, tenuAuth_type, pstrNetworkInfo->u8channel,
...@@ -911,10 +916,12 @@ static int disconnect(struct wiphy *wiphy, struct net_device *dev, u16 reason_co ...@@ -911,10 +916,12 @@ static int disconnect(struct wiphy *wiphy, struct net_device *dev, u16 reason_co
s32 s32Error = 0; s32 s32Error = 0;
struct wilc_priv *priv; struct wilc_priv *priv;
struct host_if_drv *pstrWFIDrv; struct host_if_drv *pstrWFIDrv;
struct wilc_vif *vif;
u8 NullBssid[ETH_ALEN] = {0}; u8 NullBssid[ETH_ALEN] = {0};
wilc_connecting = 0; wilc_connecting = 0;
priv = wiphy_priv(wiphy); priv = wiphy_priv(wiphy);
vif = netdev_priv(priv->dev);
pstrWFIDrv = (struct host_if_drv *)priv->hWILCWFIDrv; pstrWFIDrv = (struct host_if_drv *)priv->hWILCWFIDrv;
if (!pstrWFIDrv->p2p_connect) if (!pstrWFIDrv->p2p_connect)
...@@ -928,7 +935,7 @@ static int disconnect(struct wiphy *wiphy, struct net_device *dev, u16 reason_co ...@@ -928,7 +935,7 @@ static int disconnect(struct wiphy *wiphy, struct net_device *dev, u16 reason_co
wilc_ie = false; wilc_ie = false;
pstrWFIDrv->p2p_timeout = 0; pstrWFIDrv->p2p_timeout = 0;
s32Error = wilc_disconnect(priv->hWILCWFIDrv, reason_code); s32Error = wilc_disconnect(vif, priv->hWILCWFIDrv, reason_code);
if (s32Error != 0) { if (s32Error != 0) {
PRINT_ER("Error in disconnecting: Error(%d)\n", s32Error); PRINT_ER("Error in disconnecting: Error(%d)\n", s32Error);
s32Error = -EINVAL; s32Error = -EINVAL;
...@@ -988,7 +995,7 @@ static int add_key(struct wiphy *wiphy, struct net_device *netdev, u8 key_index, ...@@ -988,7 +995,7 @@ static int add_key(struct wiphy *wiphy, struct net_device *netdev, u8 key_index,
else else
u8mode = ENCRYPT_ENABLED | WEP | WEP_EXTENDED; u8mode = ENCRYPT_ENABLED | WEP | WEP_EXTENDED;
wilc_add_wep_key_bss_ap(priv->hWILCWFIDrv, params->key, params->key_len, key_index, u8mode, tenuAuth_type); wilc_add_wep_key_bss_ap(vif, priv->hWILCWFIDrv, params->key, params->key_len, key_index, u8mode, tenuAuth_type);
break; break;
} }
if (memcmp(params->key, priv->WILC_WFI_wep_key[key_index], params->key_len)) { if (memcmp(params->key, priv->WILC_WFI_wep_key[key_index], params->key_len)) {
...@@ -1002,7 +1009,7 @@ static int add_key(struct wiphy *wiphy, struct net_device *netdev, u8 key_index, ...@@ -1002,7 +1009,7 @@ static int add_key(struct wiphy *wiphy, struct net_device *netdev, u8 key_index,
for (i = 0; i < params->key_len; i++) for (i = 0; i < params->key_len; i++)
PRINT_INFO(CFG80211_DBG, "WEP key value[%d] = %d\n", i, params->key[i]); PRINT_INFO(CFG80211_DBG, "WEP key value[%d] = %d\n", i, params->key[i]);
} }
wilc_add_wep_key_bss_sta(priv->hWILCWFIDrv, params->key, params->key_len, key_index); wilc_add_wep_key_bss_sta(vif, priv->hWILCWFIDrv, params->key, params->key_len, key_index);
} }
break; break;
...@@ -1059,7 +1066,7 @@ static int add_key(struct wiphy *wiphy, struct net_device *netdev, u8 key_index, ...@@ -1059,7 +1066,7 @@ static int add_key(struct wiphy *wiphy, struct net_device *netdev, u8 key_index,
} }
wilc_add_rx_gtk(priv->hWILCWFIDrv, params->key, KeyLen, wilc_add_rx_gtk(vif, priv->hWILCWFIDrv, params->key, KeyLen,
key_index, params->seq_len, params->seq, pu8RxMic, pu8TxMic, AP_MODE, u8gmode); key_index, params->seq_len, params->seq, pu8RxMic, pu8TxMic, AP_MODE, u8gmode);
} else { } else {
...@@ -1103,7 +1110,7 @@ static int add_key(struct wiphy *wiphy, struct net_device *netdev, u8 key_index, ...@@ -1103,7 +1110,7 @@ static int add_key(struct wiphy *wiphy, struct net_device *netdev, u8 key_index,
priv->wilc_ptk[key_index]->key_len = params->key_len; priv->wilc_ptk[key_index]->key_len = params->key_len;
priv->wilc_ptk[key_index]->seq_len = params->seq_len; priv->wilc_ptk[key_index]->seq_len = params->seq_len;
wilc_add_ptk(priv->hWILCWFIDrv, params->key, KeyLen, mac_addr, wilc_add_ptk(vif, priv->hWILCWFIDrv, params->key, KeyLen, mac_addr,
pu8RxMic, pu8TxMic, AP_MODE, u8pmode, key_index); pu8RxMic, pu8TxMic, AP_MODE, u8pmode, key_index);
} }
break; break;
...@@ -1143,7 +1150,7 @@ static int add_key(struct wiphy *wiphy, struct net_device *netdev, u8 key_index, ...@@ -1143,7 +1150,7 @@ static int add_key(struct wiphy *wiphy, struct net_device *netdev, u8 key_index,
g_gtk_keys_saved = true; g_gtk_keys_saved = true;
} }
wilc_add_rx_gtk(priv->hWILCWFIDrv, params->key, KeyLen, wilc_add_rx_gtk(vif, priv->hWILCWFIDrv, params->key, KeyLen,
key_index, params->seq_len, params->seq, pu8RxMic, pu8TxMic, STATION_MODE, u8mode); key_index, params->seq_len, params->seq, pu8RxMic, pu8TxMic, STATION_MODE, u8mode);
} else { } else {
if (params->key_len > 16 && params->cipher == WLAN_CIPHER_SUITE_TKIP) { if (params->key_len > 16 && params->cipher == WLAN_CIPHER_SUITE_TKIP) {
...@@ -1177,7 +1184,7 @@ static int add_key(struct wiphy *wiphy, struct net_device *netdev, u8 key_index, ...@@ -1177,7 +1184,7 @@ static int add_key(struct wiphy *wiphy, struct net_device *netdev, u8 key_index,
g_ptk_keys_saved = true; g_ptk_keys_saved = true;
} }
wilc_add_ptk(priv->hWILCWFIDrv, params->key, KeyLen, mac_addr, wilc_add_ptk(vif, priv->hWILCWFIDrv, params->key, KeyLen, mac_addr,
pu8RxMic, pu8TxMic, STATION_MODE, u8mode, key_index); pu8RxMic, pu8TxMic, STATION_MODE, u8mode, key_index);
PRINT_D(CFG80211_DBG, "Adding pairwise key\n"); PRINT_D(CFG80211_DBG, "Adding pairwise key\n");
if (INFO) { if (INFO) {
...@@ -1254,7 +1261,7 @@ static int del_key(struct wiphy *wiphy, struct net_device *netdev, ...@@ -1254,7 +1261,7 @@ static int del_key(struct wiphy *wiphy, struct net_device *netdev,
priv->WILC_WFI_wep_key_len[key_index] = 0; priv->WILC_WFI_wep_key_len[key_index] = 0;
PRINT_D(CFG80211_DBG, "Removing WEP key with index = %d\n", key_index); PRINT_D(CFG80211_DBG, "Removing WEP key with index = %d\n", key_index);
wilc_remove_wep_key(priv->hWILCWFIDrv, key_index); wilc_remove_wep_key(vif, priv->hWILCWFIDrv, key_index);
} else { } else {
PRINT_D(CFG80211_DBG, "Removing all installed keys\n"); PRINT_D(CFG80211_DBG, "Removing all installed keys\n");
wilc_remove_key(priv->hWILCWFIDrv, mac_addr); wilc_remove_key(priv->hWILCWFIDrv, mac_addr);
...@@ -1305,14 +1312,15 @@ static int set_default_key(struct wiphy *wiphy, struct net_device *netdev, u8 ke ...@@ -1305,14 +1312,15 @@ static int set_default_key(struct wiphy *wiphy, struct net_device *netdev, u8 ke
bool unicast, bool multicast) bool unicast, bool multicast)
{ {
struct wilc_priv *priv; struct wilc_priv *priv;
struct wilc_vif *vif;
priv = wiphy_priv(wiphy); priv = wiphy_priv(wiphy);
vif = netdev_priv(priv->dev);
PRINT_D(CFG80211_DBG, "Setting default key with idx = %d\n", key_index); PRINT_D(CFG80211_DBG, "Setting default key with idx = %d\n", key_index);
if (key_index != priv->WILC_WFI_wep_default) { if (key_index != priv->WILC_WFI_wep_default) {
wilc_set_wep_default_keyid(priv->hWILCWFIDrv, key_index); wilc_set_wep_default_keyid(vif, priv->hWILCWFIDrv, key_index);
} }
return 0; return 0;
...@@ -1348,7 +1356,7 @@ static int get_station(struct wiphy *wiphy, struct net_device *dev, ...@@ -1348,7 +1356,7 @@ static int get_station(struct wiphy *wiphy, struct net_device *dev,
sinfo->filled |= BIT(NL80211_STA_INFO_INACTIVE_TIME); sinfo->filled |= BIT(NL80211_STA_INFO_INACTIVE_TIME);
wilc_get_inactive_time(priv->hWILCWFIDrv, mac, &(inactive_time)); wilc_get_inactive_time(vif, priv->hWILCWFIDrv, mac, &(inactive_time));
sinfo->inactive_time = 1000 * inactive_time; sinfo->inactive_time = 1000 * inactive_time;
PRINT_D(CFG80211_DBG, "Inactive time %d\n", sinfo->inactive_time); PRINT_D(CFG80211_DBG, "Inactive time %d\n", sinfo->inactive_time);
} }
...@@ -1356,7 +1364,7 @@ static int get_station(struct wiphy *wiphy, struct net_device *dev, ...@@ -1356,7 +1364,7 @@ static int get_station(struct wiphy *wiphy, struct net_device *dev,
if (vif->iftype == STATION_MODE) { if (vif->iftype == STATION_MODE) {
struct rf_info strStatistics; struct rf_info strStatistics;
wilc_get_statistics(priv->hWILCWFIDrv, &strStatistics); wilc_get_statistics(vif, priv->hWILCWFIDrv, &strStatistics);
sinfo->filled |= BIT(NL80211_STA_INFO_SIGNAL) | sinfo->filled |= BIT(NL80211_STA_INFO_SIGNAL) |
BIT(NL80211_STA_INFO_RX_PACKETS) | BIT(NL80211_STA_INFO_RX_PACKETS) |
...@@ -1394,8 +1402,10 @@ static int set_wiphy_params(struct wiphy *wiphy, u32 changed) ...@@ -1394,8 +1402,10 @@ static int set_wiphy_params(struct wiphy *wiphy, u32 changed)
s32 s32Error = 0; s32 s32Error = 0;
struct cfg_param_val pstrCfgParamVal; struct cfg_param_val pstrCfgParamVal;
struct wilc_priv *priv; struct wilc_priv *priv;
struct wilc_vif *vif;
priv = wiphy_priv(wiphy); priv = wiphy_priv(wiphy);
vif = netdev_priv(priv->dev);
pstrCfgParamVal.flag = 0; pstrCfgParamVal.flag = 0;
PRINT_D(CFG80211_DBG, "Setting Wiphy params\n"); PRINT_D(CFG80211_DBG, "Setting Wiphy params\n");
...@@ -1425,7 +1435,7 @@ static int set_wiphy_params(struct wiphy *wiphy, u32 changed) ...@@ -1425,7 +1435,7 @@ static int set_wiphy_params(struct wiphy *wiphy, u32 changed)
} }
PRINT_D(CFG80211_DBG, "Setting CFG params in the host interface\n"); PRINT_D(CFG80211_DBG, "Setting CFG params in the host interface\n");
s32Error = wilc_hif_set_cfg(priv->hWILCWFIDrv, &pstrCfgParamVal); s32Error = wilc_hif_set_cfg(vif, priv->hWILCWFIDrv, &pstrCfgParamVal);
if (s32Error) if (s32Error)
PRINT_ER("Error in setting WIPHY PARAMS\n"); PRINT_ER("Error in setting WIPHY PARAMS\n");
...@@ -1439,9 +1449,10 @@ static int set_pmksa(struct wiphy *wiphy, struct net_device *netdev, ...@@ -1439,9 +1449,10 @@ static int set_pmksa(struct wiphy *wiphy, struct net_device *netdev,
u32 i; u32 i;
s32 s32Error = 0; s32 s32Error = 0;
u8 flag = 0; u8 flag = 0;
struct wilc_vif *vif;
struct wilc_priv *priv = wiphy_priv(wiphy); struct wilc_priv *priv = wiphy_priv(wiphy);
vif = netdev_priv(priv->dev);
PRINT_D(CFG80211_DBG, "Setting PMKSA\n"); PRINT_D(CFG80211_DBG, "Setting PMKSA\n");
...@@ -1468,7 +1479,7 @@ static int set_pmksa(struct wiphy *wiphy, struct net_device *netdev, ...@@ -1468,7 +1479,7 @@ static int set_pmksa(struct wiphy *wiphy, struct net_device *netdev,
if (!s32Error) { if (!s32Error) {
PRINT_D(CFG80211_DBG, "Setting pmkid in the host interface\n"); PRINT_D(CFG80211_DBG, "Setting pmkid in the host interface\n");
s32Error = wilc_set_pmkid_info(priv->hWILCWFIDrv, &priv->pmkid_list); s32Error = wilc_set_pmkid_info(vif, priv->hWILCWFIDrv, &priv->pmkid_list);
} }
return s32Error; return s32Error;
} }
...@@ -1758,8 +1769,10 @@ static int remain_on_channel(struct wiphy *wiphy, ...@@ -1758,8 +1769,10 @@ static int remain_on_channel(struct wiphy *wiphy,
{ {
s32 s32Error = 0; s32 s32Error = 0;
struct wilc_priv *priv; struct wilc_priv *priv;
struct wilc_vif *vif;
priv = wiphy_priv(wiphy); priv = wiphy_priv(wiphy);
vif = netdev_priv(priv->dev);
PRINT_D(GENERIC_DBG, "Remaining on channel %d\n", chan->hw_value); PRINT_D(GENERIC_DBG, "Remaining on channel %d\n", chan->hw_value);
...@@ -1776,7 +1789,7 @@ static int remain_on_channel(struct wiphy *wiphy, ...@@ -1776,7 +1789,7 @@ static int remain_on_channel(struct wiphy *wiphy,
priv->strRemainOnChanParams.u32ListenDuration = duration; priv->strRemainOnChanParams.u32ListenDuration = duration;
priv->strRemainOnChanParams.u32ListenSessionID++; priv->strRemainOnChanParams.u32ListenSessionID++;
s32Error = wilc_remain_on_channel(priv->hWILCWFIDrv s32Error = wilc_remain_on_channel(vif, priv->hWILCWFIDrv
, priv->strRemainOnChanParams.u32ListenSessionID , priv->strRemainOnChanParams.u32ListenSessionID
, duration , duration
, chan->hw_value , chan->hw_value
...@@ -1793,12 +1806,14 @@ static int cancel_remain_on_channel(struct wiphy *wiphy, ...@@ -1793,12 +1806,14 @@ static int cancel_remain_on_channel(struct wiphy *wiphy,
{ {
s32 s32Error = 0; s32 s32Error = 0;
struct wilc_priv *priv; struct wilc_priv *priv;
struct wilc_vif *vif;
priv = wiphy_priv(wiphy); priv = wiphy_priv(wiphy);
vif = netdev_priv(priv->dev);
PRINT_D(CFG80211_DBG, "Cancel remain on channel\n"); PRINT_D(CFG80211_DBG, "Cancel remain on channel\n");
s32Error = wilc_listen_state_expired(priv->hWILCWFIDrv, priv->strRemainOnChanParams.u32ListenSessionID); s32Error = wilc_listen_state_expired(vif, priv->hWILCWFIDrv, priv->strRemainOnChanParams.u32ListenSessionID);
return s32Error; return s32Error;
} }
...@@ -1846,7 +1861,7 @@ static int mgmt_tx(struct wiphy *wiphy, ...@@ -1846,7 +1861,7 @@ static int mgmt_tx(struct wiphy *wiphy,
if (ieee80211_is_probe_resp(mgmt->frame_control)) { if (ieee80211_is_probe_resp(mgmt->frame_control)) {
PRINT_D(GENERIC_DBG, "TX: Probe Response\n"); PRINT_D(GENERIC_DBG, "TX: Probe Response\n");
PRINT_D(GENERIC_DBG, "Setting channel: %d\n", chan->hw_value); PRINT_D(GENERIC_DBG, "Setting channel: %d\n", chan->hw_value);
wilc_set_mac_chnl_num(priv->hWILCWFIDrv, chan->hw_value); wilc_set_mac_chnl_num(vif, priv->hWILCWFIDrv, chan->hw_value);
curr_channel = chan->hw_value; curr_channel = chan->hw_value;
} else if (ieee80211_is_action(mgmt->frame_control)) { } else if (ieee80211_is_action(mgmt->frame_control)) {
PRINT_D(GENERIC_DBG, "ACTION FRAME:%x\n", (u16)mgmt->frame_control); PRINT_D(GENERIC_DBG, "ACTION FRAME:%x\n", (u16)mgmt->frame_control);
...@@ -1856,7 +1871,7 @@ static int mgmt_tx(struct wiphy *wiphy, ...@@ -1856,7 +1871,7 @@ static int mgmt_tx(struct wiphy *wiphy,
if (buf[ACTION_SUBTYPE_ID] != PUBLIC_ACT_VENDORSPEC || if (buf[ACTION_SUBTYPE_ID] != PUBLIC_ACT_VENDORSPEC ||
buf[P2P_PUB_ACTION_SUBTYPE] != GO_NEG_CONF) { buf[P2P_PUB_ACTION_SUBTYPE] != GO_NEG_CONF) {
PRINT_D(GENERIC_DBG, "Setting channel: %d\n", chan->hw_value); PRINT_D(GENERIC_DBG, "Setting channel: %d\n", chan->hw_value);
wilc_set_mac_chnl_num(priv->hWILCWFIDrv, chan->hw_value); wilc_set_mac_chnl_num(vif, priv->hWILCWFIDrv, chan->hw_value);
curr_channel = chan->hw_value; curr_channel = chan->hw_value;
} }
switch (buf[ACTION_SUBTYPE_ID]) { switch (buf[ACTION_SUBTYPE_ID]) {
...@@ -2002,7 +2017,7 @@ void wilc_mgmt_frame_register(struct wiphy *wiphy, struct wireless_dev *wdev, ...@@ -2002,7 +2017,7 @@ void wilc_mgmt_frame_register(struct wiphy *wiphy, struct wireless_dev *wdev,
PRINT_D(GENERIC_DBG, "Return since mac is closed\n"); PRINT_D(GENERIC_DBG, "Return since mac is closed\n");
return; return;
} }
wilc_frame_register(priv->hWILCWFIDrv, frame_type, reg); wilc_frame_register(vif, priv->hWILCWFIDrv, frame_type, reg);
} }
static int set_cqm_rssi_config(struct wiphy *wiphy, struct net_device *dev, static int set_cqm_rssi_config(struct wiphy *wiphy, struct net_device *dev,
...@@ -2016,6 +2031,7 @@ static int dump_station(struct wiphy *wiphy, struct net_device *dev, ...@@ -2016,6 +2031,7 @@ static int dump_station(struct wiphy *wiphy, struct net_device *dev,
int idx, u8 *mac, struct station_info *sinfo) int idx, u8 *mac, struct station_info *sinfo)
{ {
struct wilc_priv *priv; struct wilc_priv *priv;
struct wilc_vif *vif;
PRINT_D(CFG80211_DBG, "Dumping station information\n"); PRINT_D(CFG80211_DBG, "Dumping station information\n");
...@@ -2023,10 +2039,11 @@ static int dump_station(struct wiphy *wiphy, struct net_device *dev, ...@@ -2023,10 +2039,11 @@ static int dump_station(struct wiphy *wiphy, struct net_device *dev,
return -ENOENT; return -ENOENT;
priv = wiphy_priv(wiphy); priv = wiphy_priv(wiphy);
vif = netdev_priv(priv->dev);
sinfo->filled |= BIT(NL80211_STA_INFO_SIGNAL); sinfo->filled |= BIT(NL80211_STA_INFO_SIGNAL);
wilc_get_rssi(priv->hWILCWFIDrv, &(sinfo->signal)); wilc_get_rssi(vif, priv->hWILCWFIDrv, &(sinfo->signal));
return 0; return 0;
} }
...@@ -2035,6 +2052,7 @@ static int set_power_mgmt(struct wiphy *wiphy, struct net_device *dev, ...@@ -2035,6 +2052,7 @@ static int set_power_mgmt(struct wiphy *wiphy, struct net_device *dev,
bool enabled, int timeout) bool enabled, int timeout)
{ {
struct wilc_priv *priv; struct wilc_priv *priv;
struct wilc_vif *vif;
PRINT_D(CFG80211_DBG, " Power save Enabled= %d , TimeOut = %d\n", enabled, timeout); PRINT_D(CFG80211_DBG, " Power save Enabled= %d , TimeOut = %d\n", enabled, timeout);
...@@ -2042,13 +2060,14 @@ static int set_power_mgmt(struct wiphy *wiphy, struct net_device *dev, ...@@ -2042,13 +2060,14 @@ static int set_power_mgmt(struct wiphy *wiphy, struct net_device *dev,
return -ENOENT; return -ENOENT;
priv = wiphy_priv(wiphy); priv = wiphy_priv(wiphy);
vif = netdev_priv(priv->dev);
if (!priv->hWILCWFIDrv) { if (!priv->hWILCWFIDrv) {
PRINT_ER("Driver is NULL\n"); PRINT_ER("Driver is NULL\n");
return -EIO; return -EIO;
} }
if (wilc_enable_ps) if (wilc_enable_ps)
wilc_set_power_mgmt(priv->hWILCWFIDrv, enabled, timeout); wilc_set_power_mgmt(vif, priv->hWILCWFIDrv, enabled, timeout);
return 0; return 0;
...@@ -2096,7 +2115,7 @@ static int change_virtual_intf(struct wiphy *wiphy, struct net_device *dev, ...@@ -2096,7 +2115,7 @@ static int change_virtual_intf(struct wiphy *wiphy, struct net_device *dev,
vif->iftype = STATION_MODE; vif->iftype = STATION_MODE;
if (wl->initialized) { if (wl->initialized) {
wilc_del_all_rx_ba_session(priv->hWILCWFIDrv, wilc_del_all_rx_ba_session(vif, priv->hWILCWFIDrv,
wl->vif[0]->bssid, TID); wl->vif[0]->bssid, TID);
wilc_wait_msg_queue_idle(); wilc_wait_msg_queue_idle();
...@@ -2107,21 +2126,21 @@ static int change_virtual_intf(struct wiphy *wiphy, struct net_device *dev, ...@@ -2107,21 +2126,21 @@ static int change_virtual_intf(struct wiphy *wiphy, struct net_device *dev,
wilc_initialized = 1; wilc_initialized = 1;
vif->iftype = interface_type; vif->iftype = interface_type;
wilc_set_wfi_drv_handler(wl->vif[0]->hif_drv); wilc_set_wfi_drv_handler(vif, wl->vif[0]->hif_drv);
wilc_set_mac_address(wl->vif[0]->hif_drv, wilc_set_mac_address(vif, wl->vif[0]->hif_drv,
wl->vif[0]->src_addr); wl->vif[0]->src_addr);
wilc_set_operation_mode(priv->hWILCWFIDrv, STATION_MODE); wilc_set_operation_mode(vif, priv->hWILCWFIDrv, STATION_MODE);
if (g_wep_keys_saved) { if (g_wep_keys_saved) {
wilc_set_wep_default_keyid(wl->vif[0]->hif_drv, wilc_set_wep_default_keyid(vif, wl->vif[0]->hif_drv,
g_key_wep_params.key_idx); g_key_wep_params.key_idx);
wilc_add_wep_key_bss_sta(wl->vif[0]->hif_drv, wilc_add_wep_key_bss_sta(vif, wl->vif[0]->hif_drv,
g_key_wep_params.key, g_key_wep_params.key,
g_key_wep_params.key_len, g_key_wep_params.key_len,
g_key_wep_params.key_idx); g_key_wep_params.key_idx);
} }
wilc_flush_join_req(priv->hWILCWFIDrv); wilc_flush_join_req(vif, priv->hWILCWFIDrv);
if (g_ptk_keys_saved && g_gtk_keys_saved) { if (g_ptk_keys_saved && g_gtk_keys_saved) {
PRINT_D(CFG80211_DBG, "ptk %x %x %x\n", g_key_ptk_params.key[0], PRINT_D(CFG80211_DBG, "ptk %x %x %x\n", g_key_ptk_params.key[0],
...@@ -2149,24 +2168,24 @@ static int change_virtual_intf(struct wiphy *wiphy, struct net_device *dev, ...@@ -2149,24 +2168,24 @@ static int change_virtual_intf(struct wiphy *wiphy, struct net_device *dev,
for (i = 0; i < num_reg_frame; i++) { for (i = 0; i < num_reg_frame; i++) {
PRINT_D(INIT_DBG, "Frame registering Type: %x - Reg: %d\n", vif->g_struct_frame_reg[i].frame_type, PRINT_D(INIT_DBG, "Frame registering Type: %x - Reg: %d\n", vif->g_struct_frame_reg[i].frame_type,
vif->g_struct_frame_reg[i].reg); vif->g_struct_frame_reg[i].reg);
wilc_frame_register(priv->hWILCWFIDrv, wilc_frame_register(vif, priv->hWILCWFIDrv,
vif->g_struct_frame_reg[i].frame_type, vif->g_struct_frame_reg[i].frame_type,
vif->g_struct_frame_reg[i].reg); vif->g_struct_frame_reg[i].reg);
} }
} }
wilc_enable_ps = true; wilc_enable_ps = true;
wilc_set_power_mgmt(priv->hWILCWFIDrv, 1, 0); wilc_set_power_mgmt(vif, priv->hWILCWFIDrv, 1, 0);
} }
break; break;
case NL80211_IFTYPE_P2P_CLIENT: case NL80211_IFTYPE_P2P_CLIENT:
wilc_enable_ps = false; wilc_enable_ps = false;
wilc_set_power_mgmt(priv->hWILCWFIDrv, 0, 0); wilc_set_power_mgmt(vif, priv->hWILCWFIDrv, 0, 0);
wilc_connecting = 0; wilc_connecting = 0;
PRINT_D(HOSTAPD_DBG, "Interface type = NL80211_IFTYPE_P2P_CLIENT\n"); PRINT_D(HOSTAPD_DBG, "Interface type = NL80211_IFTYPE_P2P_CLIENT\n");
wilc_del_all_rx_ba_session(priv->hWILCWFIDrv, wilc_del_all_rx_ba_session(vif, priv->hWILCWFIDrv,
wl->vif[0]->bssid, TID); wl->vif[0]->bssid, TID);
dev->ieee80211_ptr->iftype = type; dev->ieee80211_ptr->iftype = type;
...@@ -2184,21 +2203,21 @@ static int change_virtual_intf(struct wiphy *wiphy, struct net_device *dev, ...@@ -2184,21 +2203,21 @@ static int change_virtual_intf(struct wiphy *wiphy, struct net_device *dev,
wilc1000_wlan_init(dev, vif); wilc1000_wlan_init(dev, vif);
wilc_initialized = 1; wilc_initialized = 1;
wilc_set_wfi_drv_handler(wl->vif[0]->hif_drv); wilc_set_wfi_drv_handler(vif, wl->vif[0]->hif_drv);
wilc_set_mac_address(wl->vif[0]->hif_drv, wilc_set_mac_address(vif, wl->vif[0]->hif_drv,
wl->vif[0]->src_addr); wl->vif[0]->src_addr);
wilc_set_operation_mode(priv->hWILCWFIDrv, STATION_MODE); wilc_set_operation_mode(vif, priv->hWILCWFIDrv, STATION_MODE);
if (g_wep_keys_saved) { if (g_wep_keys_saved) {
wilc_set_wep_default_keyid(wl->vif[0]->hif_drv, wilc_set_wep_default_keyid(vif, wl->vif[0]->hif_drv,
g_key_wep_params.key_idx); g_key_wep_params.key_idx);
wilc_add_wep_key_bss_sta(wl->vif[0]->hif_drv, wilc_add_wep_key_bss_sta(vif, wl->vif[0]->hif_drv,
g_key_wep_params.key, g_key_wep_params.key,
g_key_wep_params.key_len, g_key_wep_params.key_len,
g_key_wep_params.key_idx); g_key_wep_params.key_idx);
} }
wilc_flush_join_req(priv->hWILCWFIDrv); wilc_flush_join_req(vif, priv->hWILCWFIDrv);
if (g_ptk_keys_saved && g_gtk_keys_saved) { if (g_ptk_keys_saved && g_gtk_keys_saved) {
PRINT_D(CFG80211_DBG, "ptk %x %x %x\n", g_key_ptk_params.key[0], PRINT_D(CFG80211_DBG, "ptk %x %x %x\n", g_key_ptk_params.key[0],
...@@ -2229,7 +2248,7 @@ static int change_virtual_intf(struct wiphy *wiphy, struct net_device *dev, ...@@ -2229,7 +2248,7 @@ static int change_virtual_intf(struct wiphy *wiphy, struct net_device *dev,
for (i = 0; i < num_reg_frame; i++) { for (i = 0; i < num_reg_frame; i++) {
PRINT_D(INIT_DBG, "Frame registering Type: %x - Reg: %d\n", vif->g_struct_frame_reg[i].frame_type, PRINT_D(INIT_DBG, "Frame registering Type: %x - Reg: %d\n", vif->g_struct_frame_reg[i].frame_type,
vif->g_struct_frame_reg[i].reg); vif->g_struct_frame_reg[i].reg);
wilc_frame_register(priv->hWILCWFIDrv, wilc_frame_register(vif, priv->hWILCWFIDrv,
vif->g_struct_frame_reg[i].frame_type, vif->g_struct_frame_reg[i].frame_type,
vif->g_struct_frame_reg[i].reg); vif->g_struct_frame_reg[i].reg);
} }
...@@ -2256,7 +2275,7 @@ static int change_virtual_intf(struct wiphy *wiphy, struct net_device *dev, ...@@ -2256,7 +2275,7 @@ static int change_virtual_intf(struct wiphy *wiphy, struct net_device *dev,
for (i = 0; i < num_reg_frame; i++) { for (i = 0; i < num_reg_frame; i++) {
PRINT_D(INIT_DBG, "Frame registering Type: %x - Reg: %d\n", vif->g_struct_frame_reg[i].frame_type, PRINT_D(INIT_DBG, "Frame registering Type: %x - Reg: %d\n", vif->g_struct_frame_reg[i].frame_type,
vif->g_struct_frame_reg[i].reg); vif->g_struct_frame_reg[i].reg);
wilc_frame_register(priv->hWILCWFIDrv, wilc_frame_register(vif, priv->hWILCWFIDrv,
vif->g_struct_frame_reg[i].frame_type, vif->g_struct_frame_reg[i].frame_type,
vif->g_struct_frame_reg[i].reg); vif->g_struct_frame_reg[i].reg);
} }
...@@ -2269,8 +2288,8 @@ static int change_virtual_intf(struct wiphy *wiphy, struct net_device *dev, ...@@ -2269,8 +2288,8 @@ static int change_virtual_intf(struct wiphy *wiphy, struct net_device *dev,
wilc_optaining_ip = true; wilc_optaining_ip = true;
mod_timer(&wilc_during_ip_timer, mod_timer(&wilc_during_ip_timer,
jiffies + msecs_to_jiffies(during_ip_time)); jiffies + msecs_to_jiffies(during_ip_time));
wilc_set_power_mgmt(priv->hWILCWFIDrv, 0, 0); wilc_set_power_mgmt(vif, priv->hWILCWFIDrv, 0, 0);
wilc_del_all_rx_ba_session(priv->hWILCWFIDrv, wilc_del_all_rx_ba_session(vif, priv->hWILCWFIDrv,
wl->vif[0]->bssid, TID); wl->vif[0]->bssid, TID);
wilc_enable_ps = false; wilc_enable_ps = false;
PRINT_D(HOSTAPD_DBG, "Interface type = NL80211_IFTYPE_GO\n"); PRINT_D(HOSTAPD_DBG, "Interface type = NL80211_IFTYPE_GO\n");
...@@ -2289,21 +2308,21 @@ static int change_virtual_intf(struct wiphy *wiphy, struct net_device *dev, ...@@ -2289,21 +2308,21 @@ static int change_virtual_intf(struct wiphy *wiphy, struct net_device *dev,
wilc1000_wlan_init(dev, vif); wilc1000_wlan_init(dev, vif);
wilc_initialized = 1; wilc_initialized = 1;
wilc_set_wfi_drv_handler(wl->vif[0]->hif_drv); wilc_set_wfi_drv_handler(vif, wl->vif[0]->hif_drv);
wilc_set_mac_address(wl->vif[0]->hif_drv, wilc_set_mac_address(vif, wl->vif[0]->hif_drv,
wl->vif[0]->src_addr); wl->vif[0]->src_addr);
wilc_set_operation_mode(priv->hWILCWFIDrv, AP_MODE); wilc_set_operation_mode(vif, priv->hWILCWFIDrv, AP_MODE);
if (g_wep_keys_saved) { if (g_wep_keys_saved) {
wilc_set_wep_default_keyid(wl->vif[0]->hif_drv, wilc_set_wep_default_keyid(vif, wl->vif[0]->hif_drv,
g_key_wep_params.key_idx); g_key_wep_params.key_idx);
wilc_add_wep_key_bss_sta(wl->vif[0]->hif_drv, wilc_add_wep_key_bss_sta(vif, wl->vif[0]->hif_drv,
g_key_wep_params.key, g_key_wep_params.key,
g_key_wep_params.key_len, g_key_wep_params.key_len,
g_key_wep_params.key_idx); g_key_wep_params.key_idx);
} }
wilc_flush_join_req(priv->hWILCWFIDrv); wilc_flush_join_req(vif, priv->hWILCWFIDrv);
if (g_ptk_keys_saved && g_gtk_keys_saved) { if (g_ptk_keys_saved && g_gtk_keys_saved) {
PRINT_D(CFG80211_DBG, "ptk %x %x %x cipher %x\n", g_key_ptk_params.key[0], PRINT_D(CFG80211_DBG, "ptk %x %x %x cipher %x\n", g_key_ptk_params.key[0],
...@@ -2333,7 +2352,7 @@ static int change_virtual_intf(struct wiphy *wiphy, struct net_device *dev, ...@@ -2333,7 +2352,7 @@ static int change_virtual_intf(struct wiphy *wiphy, struct net_device *dev,
for (i = 0; i < num_reg_frame; i++) { for (i = 0; i < num_reg_frame; i++) {
PRINT_D(INIT_DBG, "Frame registering Type: %x - Reg: %d\n", vif->g_struct_frame_reg[i].frame_type, PRINT_D(INIT_DBG, "Frame registering Type: %x - Reg: %d\n", vif->g_struct_frame_reg[i].frame_type,
vif->g_struct_frame_reg[i].reg); vif->g_struct_frame_reg[i].reg);
wilc_frame_register(priv->hWILCWFIDrv, wilc_frame_register(vif, priv->hWILCWFIDrv,
vif->g_struct_frame_reg[i].frame_type, vif->g_struct_frame_reg[i].frame_type,
vif->g_struct_frame_reg[i].reg); vif->g_struct_frame_reg[i].reg);
} }
...@@ -2372,7 +2391,7 @@ static int start_ap(struct wiphy *wiphy, struct net_device *dev, ...@@ -2372,7 +2391,7 @@ static int start_ap(struct wiphy *wiphy, struct net_device *dev,
wilc_wlan_set_bssid(dev, wl->vif[0]->src_addr); wilc_wlan_set_bssid(dev, wl->vif[0]->src_addr);
s32Error = wilc_add_beacon(priv->hWILCWFIDrv, s32Error = wilc_add_beacon(vif, priv->hWILCWFIDrv,
settings->beacon_interval, settings->beacon_interval,
settings->dtim_period, settings->dtim_period,
beacon->head_len, (u8 *)beacon->head, beacon->head_len, (u8 *)beacon->head,
...@@ -2385,13 +2404,15 @@ static int change_beacon(struct wiphy *wiphy, struct net_device *dev, ...@@ -2385,13 +2404,15 @@ static int change_beacon(struct wiphy *wiphy, struct net_device *dev,
struct cfg80211_beacon_data *beacon) struct cfg80211_beacon_data *beacon)
{ {
struct wilc_priv *priv; struct wilc_priv *priv;
struct wilc_vif *vif;
s32 s32Error = 0; s32 s32Error = 0;
priv = wiphy_priv(wiphy); priv = wiphy_priv(wiphy);
vif = netdev_priv(priv->dev);
PRINT_D(HOSTAPD_DBG, "Setting beacon\n"); PRINT_D(HOSTAPD_DBG, "Setting beacon\n");
s32Error = wilc_add_beacon(priv->hWILCWFIDrv, s32Error = wilc_add_beacon(vif, priv->hWILCWFIDrv,
0, 0,
0, 0,
beacon->head_len, (u8 *)beacon->head, beacon->head_len, (u8 *)beacon->head,
...@@ -2404,18 +2425,20 @@ static int stop_ap(struct wiphy *wiphy, struct net_device *dev) ...@@ -2404,18 +2425,20 @@ static int stop_ap(struct wiphy *wiphy, struct net_device *dev)
{ {
s32 s32Error = 0; s32 s32Error = 0;
struct wilc_priv *priv; struct wilc_priv *priv;
struct wilc_vif *vif;
u8 NullBssid[ETH_ALEN] = {0}; u8 NullBssid[ETH_ALEN] = {0};
if (!wiphy) if (!wiphy)
return -EFAULT; return -EFAULT;
priv = wiphy_priv(wiphy); priv = wiphy_priv(wiphy);
vif = netdev_priv(priv->dev);
PRINT_D(HOSTAPD_DBG, "Deleting beacon\n"); PRINT_D(HOSTAPD_DBG, "Deleting beacon\n");
wilc_wlan_set_bssid(dev, NullBssid); wilc_wlan_set_bssid(dev, NullBssid);
s32Error = wilc_del_beacon(priv->hWILCWFIDrv); s32Error = wilc_del_beacon(vif, priv->hWILCWFIDrv);
if (s32Error) if (s32Error)
PRINT_ER("Host delete beacon fail\n"); PRINT_ER("Host delete beacon fail\n");
...@@ -2486,7 +2509,8 @@ static int add_station(struct wiphy *wiphy, struct net_device *dev, ...@@ -2486,7 +2509,8 @@ static int add_station(struct wiphy *wiphy, struct net_device *dev,
PRINT_D(HOSTAPD_DBG, "Flag Set = %d\n", PRINT_D(HOSTAPD_DBG, "Flag Set = %d\n",
strStaParams.flags_set); strStaParams.flags_set);
s32Error = wilc_add_station(priv->hWILCWFIDrv, &strStaParams); s32Error = wilc_add_station(vif, priv->hWILCWFIDrv,
&strStaParams);
if (s32Error) if (s32Error)
PRINT_ER("Host add station fail\n"); PRINT_ER("Host add station fail\n");
} }
...@@ -2514,12 +2538,12 @@ static int del_station(struct wiphy *wiphy, struct net_device *dev, ...@@ -2514,12 +2538,12 @@ static int del_station(struct wiphy *wiphy, struct net_device *dev,
if (!mac) { if (!mac) {
PRINT_D(HOSTAPD_DBG, "All associated stations\n"); PRINT_D(HOSTAPD_DBG, "All associated stations\n");
s32Error = wilc_del_allstation(priv->hWILCWFIDrv, priv->assoc_stainfo.au8Sta_AssociatedBss); s32Error = wilc_del_allstation(vif, priv->hWILCWFIDrv, priv->assoc_stainfo.au8Sta_AssociatedBss);
} else { } else {
PRINT_D(HOSTAPD_DBG, "With mac address: %x%x%x%x%x%x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]); PRINT_D(HOSTAPD_DBG, "With mac address: %x%x%x%x%x%x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
} }
s32Error = wilc_del_station(priv->hWILCWFIDrv, mac); s32Error = wilc_del_station(vif, priv->hWILCWFIDrv, mac);
if (s32Error) if (s32Error)
PRINT_ER("Host delete station fail\n"); PRINT_ER("Host delete station fail\n");
...@@ -2592,7 +2616,8 @@ static int change_station(struct wiphy *wiphy, struct net_device *dev, ...@@ -2592,7 +2616,8 @@ static int change_station(struct wiphy *wiphy, struct net_device *dev,
PRINT_D(HOSTAPD_DBG, "Flag Set = %d\n", PRINT_D(HOSTAPD_DBG, "Flag Set = %d\n",
strStaParams.flags_set); strStaParams.flags_set);
s32Error = wilc_edit_station(priv->hWILCWFIDrv, &strStaParams); s32Error = wilc_edit_station(vif, priv->hWILCWFIDrv,
&strStaParams);
if (s32Error) if (s32Error)
PRINT_ER("Host edit station fail\n"); PRINT_ER("Host edit station fail\n");
} }
...@@ -2825,10 +2850,11 @@ int wilc_init_host_int(struct net_device *net) ...@@ -2825,10 +2850,11 @@ int wilc_init_host_int(struct net_device *net)
int wilc_deinit_host_int(struct net_device *net) int wilc_deinit_host_int(struct net_device *net)
{ {
int s32Error = 0; int s32Error = 0;
struct wilc_vif *vif;
struct wilc_priv *priv; struct wilc_priv *priv;
priv = wdev_priv(net->ieee80211_ptr); priv = wdev_priv(net->ieee80211_ptr);
vif = netdev_priv(priv->dev);
priv->gbAutoRateAdjusted = false; priv->gbAutoRateAdjusted = false;
...@@ -2836,7 +2862,7 @@ int wilc_deinit_host_int(struct net_device *net) ...@@ -2836,7 +2862,7 @@ int wilc_deinit_host_int(struct net_device *net)
op_ifcs--; op_ifcs--;
s32Error = wilc_deinit(priv->hWILCWFIDrv); s32Error = wilc_deinit(vif, priv->hWILCWFIDrv);
clear_shadow_scan(); clear_shadow_scan();
if (op_ifcs == 0) { if (op_ifcs == 0) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment