qcacmn: Fix issue for AP+AP vap where data takes slow path
With EasyMesh disable at runtime data from second vap is taking slow path, due to wrong metadata mask and session id populated to IPA driver. Fix is pass correct metadata and session id based on EasyMesh status to IPA. Change-Id: I0735965c0d8bd257492343e3a27f9f1509091b87 CRs-Fixed: 3487546
这个提交包含在:
@@ -71,11 +71,8 @@ struct dp_ipa_reo_remap_record {
|
||||
uint32_t ix3_reg;
|
||||
};
|
||||
|
||||
#ifdef IPA_WDS_EASYMESH_FEATURE
|
||||
#define WLAN_IPA_META_DATA_MASK htonl(0x000000FF)
|
||||
#else
|
||||
#define WLAN_IPA_AST_META_DATA_MASK htonl(0x000000FF)
|
||||
#define WLAN_IPA_META_DATA_MASK htonl(0x00FF0000)
|
||||
#endif
|
||||
|
||||
#define REO_REMAP_HISTORY_SIZE 32
|
||||
|
||||
@@ -1218,7 +1215,10 @@ static void dp_ipa_set_pipe_db(struct dp_ipa_resources *res,
|
||||
static void dp_ipa_setup_iface_session_id(qdf_ipa_wdi_reg_intf_in_params_t *in,
|
||||
uint8_t session_id)
|
||||
{
|
||||
QDF_IPA_WDI_REG_INTF_IN_PARAMS_META_DATA(in) = htonl(session_id);
|
||||
if (ucfg_ipa_is_wds_enabled())
|
||||
QDF_IPA_WDI_REG_INTF_IN_PARAMS_META_DATA(in) = htonl(session_id);
|
||||
else
|
||||
QDF_IPA_WDI_REG_INTF_IN_PARAMS_META_DATA(in) = htonl(session_id << 16);
|
||||
}
|
||||
#else
|
||||
static void dp_ipa_setup_iface_session_id(qdf_ipa_wdi_reg_intf_in_params_t *in,
|
||||
@@ -2994,10 +2994,31 @@ dp_ipa_set_wdi_vlan_hdr_type(qdf_ipa_wdi_hdr_info_t *hdr_info)
|
||||
QDF_IPA_WDI_HDR_INFO_HDR_TYPE(hdr_info) =
|
||||
IPA_HDR_L2_802_1Q;
|
||||
}
|
||||
|
||||
/**
|
||||
* dp_ipa_setup_meta_data_mask() - Pass meta data mask to IPA
|
||||
* @in: ipa in params
|
||||
*
|
||||
* Pass meta data mask to IPA.
|
||||
*
|
||||
* Return: none
|
||||
*/
|
||||
static void dp_ipa_setup_meta_data_mask(qdf_ipa_wdi_reg_intf_in_params_t *in)
|
||||
{
|
||||
if (ucfg_ipa_is_wds_enabled())
|
||||
QDF_IPA_WDI_REG_INTF_IN_PARAMS_META_DATA_MASK(in) = WLAN_IPA_AST_META_DATA_MASK;
|
||||
else
|
||||
QDF_IPA_WDI_REG_INTF_IN_PARAMS_META_DATA_MASK(in) = WLAN_IPA_META_DATA_MASK;
|
||||
}
|
||||
#else
|
||||
static inline void
|
||||
dp_ipa_set_wdi_vlan_hdr_type(qdf_ipa_wdi_hdr_info_t *hdr_info)
|
||||
{ }
|
||||
|
||||
static void dp_ipa_setup_meta_data_mask(qdf_ipa_wdi_reg_intf_in_params_t *in)
|
||||
{
|
||||
QDF_IPA_WDI_REG_INTF_IN_PARAMS_META_DATA_MASK(in) = WLAN_IPA_META_DATA_MASK;
|
||||
}
|
||||
#endif
|
||||
|
||||
QDF_STATUS dp_ipa_setup_iface(char *ifname, uint8_t *mac_addr,
|
||||
@@ -3042,7 +3063,7 @@ QDF_STATUS dp_ipa_setup_iface(char *ifname, uint8_t *mac_addr,
|
||||
&hdr_info, sizeof(qdf_ipa_wdi_hdr_info_t));
|
||||
QDF_IPA_WDI_REG_INTF_IN_PARAMS_ALT_DST_PIPE(&in) = cons_client;
|
||||
QDF_IPA_WDI_REG_INTF_IN_PARAMS_IS_META_DATA_VALID(&in) = 1;
|
||||
QDF_IPA_WDI_REG_INTF_IN_PARAMS_META_DATA_MASK(&in) = WLAN_IPA_META_DATA_MASK;
|
||||
dp_ipa_setup_meta_data_mask(&in);
|
||||
QDF_IPA_WDI_REG_INTF_IN_PARAMS_HANDLE(&in) = hdl;
|
||||
dp_ipa_setup_iface_session_id(&in, session_id);
|
||||
dp_debug("registering for session_id: %u", session_id);
|
||||
|
在新工单中引用
屏蔽一个用户