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:
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)
|
||||
{
|
||||
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;
|
||||
|
||||
/* 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;
|
||||
if (ath6kl_bmi_write(ar,
|
||||
ath6kl_get_hi_item_addr(ar,
|
||||
@ -454,12 +485,10 @@ int ath6kl_configure_target(struct ath6kl *ar)
|
||||
return -EIO;
|
||||
}
|
||||
|
||||
param |= (1 << HI_OPTION_NUM_DEV_SHIFT);
|
||||
param |= (fw_iftype << HI_OPTION_FW_MODE_SHIFT);
|
||||
if (ar->p2p && fw_iftype == HI_OPTION_FW_MODE_BSS_STA) {
|
||||
param |= HI_OPTION_FW_SUBMODE_P2PDEV <<
|
||||
HI_OPTION_FW_SUBMODE_SHIFT;
|
||||
}
|
||||
param |= (MAX_NUM_VIF << HI_OPTION_NUM_DEV_SHIFT);
|
||||
param |= fw_mode << HI_OPTION_FW_MODE_SHIFT;
|
||||
param |= fw_submode << HI_OPTION_FW_SUBMODE_SHIFT;
|
||||
|
||||
param |= (0 << HI_OPTION_MAC_ADDR_METHOD_SHIFT);
|
||||
param |= (0 << HI_OPTION_FW_BRIDGE_SHIFT);
|
||||
|
||||
|
@ -320,7 +320,10 @@ struct host_interest {
|
||||
| (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_SUBMODE_BITS 0x2
|
||||
#define HI_OPTION_FW_SUBMODE_SHIFT 0x14
|
||||
|
||||
/* Convert a Target virtual address into a Target physical address */
|
||||
|
Loading…
Reference in New Issue
Block a user