qcacmn: Add support for pmac_id in IPA driver
To support splitphy and MLO operation when multiple TX ring are present under single soc, then to differentiate the TX lmac, pmac id in per packet is require. As pmac_id in bank register is always constant for pinnacle case, so need to pass per packet in TX desc. Change-Id: I8e5a832700770274e68bf8a04e97675386184545 CRs-Fixed: 3356413
This commit is contained in:

committed by
Madan Koyyalamudi

parent
905bc10886
commit
148d0de3e5
@@ -462,6 +462,80 @@ dp_ipa_setup_tx_smmu_params_bank_id(struct dp_soc *soc,
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef QCA_IPA_LL_TX_FLOW_CONTROL
|
||||
static void
|
||||
dp_ipa_setup_tx_alt_params_pmac_id(struct dp_soc *soc,
|
||||
qdf_ipa_wdi_pipe_setup_info_t *tx)
|
||||
{
|
||||
uint8_t pmac_id = 0;
|
||||
|
||||
/* Set Pmac ID, extract pmac_id from second radio for TX_ALT ring */
|
||||
if (soc->pdev_count > 1)
|
||||
pmac_id = soc->pdev_list[soc->pdev_count - 1]->lmac_id;
|
||||
|
||||
QDF_IPA_WDI_SETUP_INFO_RX_PMAC_ID(tx, pmac_id);
|
||||
}
|
||||
|
||||
static void
|
||||
dp_ipa_setup_tx_alt_smmu_params_pmac_id(struct dp_soc *soc,
|
||||
qdf_ipa_wdi_pipe_setup_info_smmu_t *tx_smmu)
|
||||
{
|
||||
uint8_t pmac_id = 0;
|
||||
|
||||
/* Set Pmac ID, extract pmac_id from second radio for TX_ALT ring */
|
||||
if (soc->pdev_count > 1)
|
||||
pmac_id = soc->pdev_list[soc->pdev_count - 1]->lmac_id;
|
||||
|
||||
QDF_IPA_WDI_SETUP_INFO_SMMU_RX_PMAC_ID(tx_smmu, pmac_id);
|
||||
}
|
||||
|
||||
static void
|
||||
dp_ipa_setup_tx_params_pmac_id(struct dp_soc *soc,
|
||||
qdf_ipa_wdi_pipe_setup_info_t *tx)
|
||||
{
|
||||
uint8_t pmac_id;
|
||||
|
||||
pmac_id = soc->pdev_list[0]->lmac_id;
|
||||
|
||||
QDF_IPA_WDI_SETUP_INFO_RX_PMAC_ID(tx, pmac_id);
|
||||
}
|
||||
|
||||
static void
|
||||
dp_ipa_setup_tx_smmu_params_pmac_id(struct dp_soc *soc,
|
||||
qdf_ipa_wdi_pipe_setup_info_smmu_t *tx_smmu)
|
||||
{
|
||||
uint8_t pmac_id;
|
||||
|
||||
pmac_id = soc->pdev_list[0]->lmac_id;
|
||||
|
||||
QDF_IPA_WDI_SETUP_INFO_SMMU_RX_PMAC_ID(tx_smmu, pmac_id);
|
||||
}
|
||||
#else
|
||||
static inline void
|
||||
dp_ipa_setup_tx_alt_params_pmac_id(struct dp_soc *soc,
|
||||
qdf_ipa_wdi_pipe_setup_info_t *tx)
|
||||
{
|
||||
}
|
||||
|
||||
static inline void
|
||||
dp_ipa_setup_tx_alt_smmu_params_pmac_id(struct dp_soc *soc,
|
||||
qdf_ipa_wdi_pipe_setup_info_smmu_t *tx_smmu)
|
||||
{
|
||||
}
|
||||
|
||||
static inline void
|
||||
dp_ipa_setup_tx_params_pmac_id(struct dp_soc *soc,
|
||||
qdf_ipa_wdi_pipe_setup_info_t *tx)
|
||||
{
|
||||
}
|
||||
|
||||
static inline void
|
||||
dp_ipa_setup_tx_smmu_params_pmac_id(struct dp_soc *soc,
|
||||
qdf_ipa_wdi_pipe_setup_info_smmu_t *tx_smmu)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef IPA_WDI3_TX_TWO_PIPES
|
||||
static void dp_ipa_tx_alt_pool_detach(struct dp_soc *soc, struct dp_pdev *pdev)
|
||||
{
|
||||
@@ -849,6 +923,9 @@ static void dp_ipa_wdi_tx_alt_pipe_params(struct dp_soc *soc,
|
||||
QDF_IPA_WDI_SETUP_INFO_PKT_OFFSET(tx) = 0;
|
||||
|
||||
dp_ipa_setup_tx_params_bank_id(soc, tx);
|
||||
|
||||
/* Set Pmac ID, extract pmac_id from second radio for TX_ALT ring */
|
||||
dp_ipa_setup_tx_alt_params_pmac_id(soc, tx);
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -885,6 +962,9 @@ dp_ipa_wdi_tx_alt_pipe_smmu_params(struct dp_soc *soc,
|
||||
QDF_IPA_WDI_SETUP_INFO_SMMU_PKT_OFFSET(tx_smmu) = 0;
|
||||
|
||||
dp_ipa_setup_tx_smmu_params_bank_id(soc, tx_smmu);
|
||||
|
||||
/* Set Pmac ID, extract pmac_id from second radio for TX_ALT ring */
|
||||
dp_ipa_setup_tx_alt_smmu_params_pmac_id(soc, tx_smmu);
|
||||
}
|
||||
|
||||
static void dp_ipa_setup_tx_alt_pipe(struct dp_soc *soc,
|
||||
@@ -2222,6 +2302,9 @@ static void dp_ipa_wdi_tx_params(struct dp_soc *soc,
|
||||
QDF_IPA_WDI_SETUP_INFO_PKT_OFFSET(tx) = 0;
|
||||
|
||||
dp_ipa_setup_tx_params_bank_id(soc, tx);
|
||||
|
||||
/* Set Pmac ID, extract pmac_id from pdev_id 0 for TX ring */
|
||||
dp_ipa_setup_tx_params_pmac_id(soc, tx);
|
||||
}
|
||||
|
||||
static void dp_ipa_wdi_rx_params(struct dp_soc *soc,
|
||||
@@ -2310,6 +2393,9 @@ dp_ipa_wdi_tx_smmu_params(struct dp_soc *soc,
|
||||
QDF_IPA_WDI_SETUP_INFO_SMMU_PKT_OFFSET(tx_smmu) = 0;
|
||||
|
||||
dp_ipa_setup_tx_smmu_params_bank_id(soc, tx_smmu);
|
||||
|
||||
/* Set Pmac ID, extract pmac_id from first pdev for TX ring */
|
||||
dp_ipa_setup_tx_smmu_params_pmac_id(soc, tx_smmu);
|
||||
}
|
||||
|
||||
static void
|
||||
|
Reference in New Issue
Block a user