ath6kl: Configure inteface information at init time
Virtual interface information need to be configured during init time to the target. With MAX_NUM_VIF is restricted to 1, currently only a single vif is being configured. Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
This commit is contained in:
committed by
Kalle Valo
parent
2792972395
commit
7b85832dfb
@@ -429,11 +429,42 @@ static int ath6kl_target_config_wlan_params(struct ath6kl *ar)
|
|||||||
int ath6kl_configure_target(struct ath6kl *ar)
|
int ath6kl_configure_target(struct ath6kl *ar)
|
||||||
{
|
{
|
||||||
u32 param, ram_reserved_size;
|
u32 param, ram_reserved_size;
|
||||||
u8 fw_iftype;
|
u8 fw_iftype, fw_mode = 0, fw_submode;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Note: Even though the firmware interface type is
|
||||||
|
* chosen as BSS_STA for all three interfaces, can
|
||||||
|
* be configured to IBSS/AP as long as the fw submode
|
||||||
|
* remains normal mode (0 - AP, STA and IBSS). But
|
||||||
|
* due to an target assert in firmware only one interface is
|
||||||
|
* configured for now.
|
||||||
|
*/
|
||||||
fw_iftype = HI_OPTION_FW_MODE_BSS_STA;
|
fw_iftype = HI_OPTION_FW_MODE_BSS_STA;
|
||||||
|
|
||||||
/* Tell target which HTC version it is used*/
|
for (i = 0; i < MAX_NUM_VIF; i++)
|
||||||
|
fw_mode |= fw_iftype << (i * HI_OPTION_FW_MODE_BITS);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* submodes : vif[0] - AP/STA/IBSS
|
||||||
|
* vif[1] - "P2P dev"/"P2P GO"/"P2P Client"
|
||||||
|
* vif[2] - "P2P dev"/"P2P GO"/"P2P Client"
|
||||||
|
*/
|
||||||
|
fw_submode = HI_OPTION_FW_SUBMODE_NONE |
|
||||||
|
(HI_OPTION_FW_SUBMODE_P2PDEV <<
|
||||||
|
(1 * HI_OPTION_FW_SUBMODE_BITS)) |
|
||||||
|
(HI_OPTION_FW_SUBMODE_P2PDEV <<
|
||||||
|
(2 * HI_OPTION_FW_SUBMODE_BITS));
|
||||||
|
|
||||||
|
/*
|
||||||
|
* FIXME: This needs to be removed once the multivif
|
||||||
|
* support is enabled.
|
||||||
|
*/
|
||||||
|
if (ar->p2p)
|
||||||
|
fw_submode = HI_OPTION_FW_SUBMODE_P2PDEV;
|
||||||
|
else
|
||||||
|
fw_submode = HI_OPTION_FW_SUBMODE_NONE;
|
||||||
|
|
||||||
param = HTC_PROTOCOL_VERSION;
|
param = HTC_PROTOCOL_VERSION;
|
||||||
if (ath6kl_bmi_write(ar,
|
if (ath6kl_bmi_write(ar,
|
||||||
ath6kl_get_hi_item_addr(ar,
|
ath6kl_get_hi_item_addr(ar,
|
||||||
@@ -454,12 +485,10 @@ int ath6kl_configure_target(struct ath6kl *ar)
|
|||||||
return -EIO;
|
return -EIO;
|
||||||
}
|
}
|
||||||
|
|
||||||
param |= (1 << HI_OPTION_NUM_DEV_SHIFT);
|
param |= (MAX_NUM_VIF << HI_OPTION_NUM_DEV_SHIFT);
|
||||||
param |= (fw_iftype << HI_OPTION_FW_MODE_SHIFT);
|
param |= fw_mode << HI_OPTION_FW_MODE_SHIFT;
|
||||||
if (ar->p2p && fw_iftype == HI_OPTION_FW_MODE_BSS_STA) {
|
param |= fw_submode << HI_OPTION_FW_SUBMODE_SHIFT;
|
||||||
param |= HI_OPTION_FW_SUBMODE_P2PDEV <<
|
|
||||||
HI_OPTION_FW_SUBMODE_SHIFT;
|
|
||||||
}
|
|
||||||
param |= (0 << HI_OPTION_MAC_ADDR_METHOD_SHIFT);
|
param |= (0 << HI_OPTION_MAC_ADDR_METHOD_SHIFT);
|
||||||
param |= (0 << HI_OPTION_FW_BRIDGE_SHIFT);
|
param |= (0 << HI_OPTION_FW_BRIDGE_SHIFT);
|
||||||
|
|
||||||
|
@@ -320,7 +320,10 @@ struct host_interest {
|
|||||||
| (2) | (2) | (2) | (2) | (2) | (2) | (2) | (2)
|
| (2) | (2) | (2) | (2) | (2) | (2) | (2) | (2)
|
||||||
|------------------------------------------------------------------------------|
|
|------------------------------------------------------------------------------|
|
||||||
*/
|
*/
|
||||||
|
#define HI_OPTION_FW_MODE_BITS 0x2
|
||||||
#define HI_OPTION_FW_MODE_SHIFT 0xC
|
#define HI_OPTION_FW_MODE_SHIFT 0xC
|
||||||
|
|
||||||
|
#define HI_OPTION_FW_SUBMODE_BITS 0x2
|
||||||
#define HI_OPTION_FW_SUBMODE_SHIFT 0x14
|
#define HI_OPTION_FW_SUBMODE_SHIFT 0x14
|
||||||
|
|
||||||
/* Convert a Target virtual address into a Target physical address */
|
/* Convert a Target virtual address into a Target physical address */
|
||||||
|
Reference in New Issue
Block a user