qcacld-3.0: Support bigger Tx MSDU ID partition

When both host and FW support a new partition, FW uses host use
the new parition HTT_TX_IPA_NEW_MSDU_ID_SPACE_BEGIN.
If FW doesn't support a new partition, host falls back to use old
HTT_TX_IPA_MSDU_ID_SPACE_BEGIN.
Handshaking is done through WMI_READY and WMI_INIT.

Change-Id: I974c931e1b4b2d84e809ec19537a09b679932568
CRs-Fixed: 1072812
This commit is contained in:
Yun Park
2016-10-11 11:44:15 -07:00
committed by qcabuildsw
vanhempi f8d6a12438
commit 4d968dfdc0
4 muutettua tiedostoa jossa 44 lisäystä ja 1 poistoa

Näytä tiedosto

@@ -516,6 +516,7 @@ unsigned int ol_cfg_ipa_uc_rx_ind_ring_size(ol_pdev_handle pdev);
* @param pdev - handle to the physical device
*/
unsigned int ol_cfg_ipa_uc_tx_partition_base(ol_pdev_handle pdev);
void ol_cfg_set_ipa_uc_tx_partition_base(ol_pdev_handle pdev, uint32_t value);
#else
static inline unsigned int ol_cfg_ipa_uc_offload_enabled(
ol_pdev_handle pdev)
@@ -546,6 +547,12 @@ static inline unsigned int ol_cfg_ipa_uc_tx_partition_base(
{
return 0;
}
static inline void ol_cfg_set_ipa_uc_tx_partition_base(
ol_pdev_handle pdev, uint32_t value)
{
return;
}
#endif /* IPA_OFFLOAD */
/**

Näytä tiedosto

@@ -403,6 +403,12 @@ unsigned int ol_cfg_ipa_uc_tx_partition_base(ol_pdev_handle pdev)
struct txrx_pdev_cfg_t *cfg = (struct txrx_pdev_cfg_t *)pdev;
return cfg->ipa_uc_rsc.tx_partition_base;
}
void ol_cfg_set_ipa_uc_tx_partition_base(ol_pdev_handle pdev, uint32_t val)
{
struct txrx_pdev_cfg_t *cfg = (struct txrx_pdev_cfg_t *)pdev;
cfg->ipa_uc_rsc.tx_partition_base = val;
}
#endif /* IPA_OFFLOAD */
/**

Näytä tiedosto

@@ -241,6 +241,8 @@ static void wma_set_default_tgt_config(tp_wma_handle wma_handle)
tgt_cfg.scan_max_pending_req = wma_handle->max_scan;
WMI_RSRC_CFG_FLAG_MGMT_COMP_EVT_BUNDLE_SUPPORT_SET(tgt_cfg.flag1, 1);
WMI_RSRC_CFG_FLAG_TX_MSDU_ID_NEW_PARTITION_SUPPORT_SET(tgt_cfg.flag1,
1);
WMITLV_SET_HDR(&tgt_cfg.tlv_header,
WMITLV_TAG_STRUC_wmi_resource_config,
@@ -3723,6 +3725,21 @@ static inline void wma_update_target_services(tp_wma_handle wh,
if (WMI_SERVICE_IS_ENABLED(wh->wmi_service_bitmap, WMI_SERVICE_RTT))
g_fw_wlan_feat_caps |= (1 << RTT);
if (WMI_SERVICE_IS_ENABLED(wh->wmi_service_bitmap,
WMI_SERVICE_TX_MSDU_ID_NEW_PARTITION_SUPPORT)) {
ol_cfg_set_ipa_uc_tx_partition_base((ol_pdev_handle)
((p_cds_contextType) wh->cds_context)->cfg_ctx,
HTT_TX_IPA_NEW_MSDU_ID_SPACE_BEGIN);
WMA_LOGI("%s: TX_MSDU_ID_NEW_PARTITION=%d", __func__,
HTT_TX_IPA_NEW_MSDU_ID_SPACE_BEGIN);
} else {
ol_cfg_set_ipa_uc_tx_partition_base((ol_pdev_handle)
((p_cds_contextType) wh->cds_context)->cfg_ctx,
HTT_TX_IPA_MSDU_ID_SPACE_BEGIN);
WMA_LOGI("%s: TX_MSDU_ID_OLD_PARTITION=%d", __func__,
HTT_TX_IPA_MSDU_ID_SPACE_BEGIN);
}
}
/**

Näytä tiedosto

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2012-2015 The Linux Foundation. All rights reserved.
* Copyright (c) 2012-2016 The Linux Foundation. All rights reserved.
*
* Previously licensed under the ISC license by Qualcomm Atheros, Inc.
*
@@ -113,8 +113,21 @@ enum htt_pkt_type {
htt_pkt_num_types
};
/*
* TX MSDU ID partition -
* FW supports bigger MSDU ID partition which is defined as
* HTT_TX_IPA_NEW_MSDU_ID_SPACE_BEGIN
* When both host and FW support new partition, FW uses
* HTT_TX_IPA_NEW_MSDU_ID_SPACE_BEGIN
* If host doesn't support, FW falls back to HTT_TX_IPA_MSDU_ID_SPACE_BEGIN
* Handshaking is done through WMI_READY and WMI_INIT
*/
#define HTT_TX_HOST_MSDU_ID_SPACE_BEGIN 0
#define HTT_TX_IPA_MSDU_ID_SPACE_BEGIN 3000
#define TGT_RX2TX_MSDU_ID_SPACE_BEGIN 6000
/* 8192 = 0xr2000 */
#define HTT_TX_IPA_NEW_MSDU_ID_SPACE_BEGIN 8192
/* 12288 = 0x3000 */
#define TGT_RX2TX_NEW_MSDU_ID_SPACE_BEGIN 12288
#endif /* _HTT_COMMON_H_ */