Merge "qcacld-3.0: Enable WDI3.0 IPA offload" into wlan-cld3.driver.lnx.2.0-dev

This commit is contained in:
CNSS_WLAN Service 2017-10-24 12:03:22 -07:00 • committed by Gerrit - the friendly Code Review server
commit 96b1750080
4 changed files with 18 additions and 14 deletions

3
Kbuild
View file

@ -9,7 +9,6 @@ endif
ifeq ($(CONFIG_CNSS_QCA6290), y)
CONFIG_LITHIUM := y
CONFIG_WLAN_FEATURE_11AX := y
CONFIG_IPA := n
endif
ifeq ($(CONFIG_CLD_HL_SDIO_CORE), y)
@ -2187,7 +2186,9 @@ CDEFINES += -DQCA_WIFI_QCA8074
CDEFINES += -DQCA_WIFI_QCA8074_VP
CDEFINES += -DDP_INTR_POLL_BASED
CDEFINES += -DTX_PER_PDEV_DESC_POOL
ifneq ($(CONFIG_IPA_OFFLOAD), 1)
CDEFINES += -DWLAN_RX_HASH
endif
CDEFINES += -DCONFIG_DP_TRACE
CDEFINES += -DFEATURE_TSO
CDEFINES += -DTSO_DEBUG_LOG_ENABLE

View file

@ -335,10 +335,11 @@ static QDF_STATUS ol_txrx_get_vdevid(void *ppeer, uint8_t *vdev_id)
return QDF_STATUS_SUCCESS;
}
static struct cdp_vdev *ol_txrx_get_vdev_by_sta_id(uint8_t sta_id)
static struct cdp_vdev *ol_txrx_get_vdev_by_sta_id(struct cdp_pdev *ppdev,
uint8_t sta_id)
{
struct ol_txrx_pdev_t *pdev = (struct ol_txrx_pdev_t *)ppdev;
struct ol_txrx_peer_t *peer = NULL;
ol_txrx_pdev_handle pdev = NULL;
if (sta_id >= WLAN_MAX_STA_COUNT) {
QDF_TRACE(QDF_MODULE_ID_TXRX, QDF_TRACE_LEVEL_INFO_HIGH,
@ -346,7 +347,6 @@ static struct cdp_vdev *ol_txrx_get_vdev_by_sta_id(uint8_t sta_id)
return NULL;
}
pdev = cds_get_context(QDF_MODULE_ID_TXRX);
if (!pdev) {
QDF_TRACE(QDF_MODULE_ID_TXRX, QDF_TRACE_LEVEL_INFO_HIGH,
"PDEV not found for sta_id [%d]", sta_id);
@ -377,8 +377,8 @@ static struct cdp_vdev *ol_txrx_get_vdev_by_sta_id(uint8_t sta_id)
* Return: peer handle if peer is found, NULL if peer is not found.
*/
void *ol_txrx_find_peer_by_addr(struct cdp_pdev *ppdev,
uint8_t *peer_addr,
uint8_t *peer_id)
uint8_t *peer_addr,
uint8_t *peer_id)
{
struct ol_txrx_peer_t *peer;
struct ol_txrx_pdev_t *pdev = (struct ol_txrx_pdev_t *)ppdev;

View file

@ -1885,6 +1885,7 @@ QDF_STATUS hdd_update_dp_vdev_flags(void *cbk_data,
QDF_STATUS status = QDF_STATUS_SUCCESS;
void *soc = cds_get_context(QDF_MODULE_ID_SOC);
struct hdd_context *hdd_ctx;
void *pdev = cds_get_context(QDF_MODULE_ID_TXRX);
struct wlan_objmgr_psoc **psoc;
if (!cbk_data)
@ -1896,7 +1897,7 @@ QDF_STATUS hdd_update_dp_vdev_flags(void *cbk_data,
if (!hdd_ctx->tdls_nap_active)
return status;
data_vdev = cdp_peer_get_vdev_by_sta_id(soc, sta_id);
data_vdev = cdp_peer_get_vdev_by_sta_id(soc, pdev, sta_id);
if (NULL == data_vdev) {
status = QDF_STATUS_E_FAILURE;
return status;

View file

@ -539,7 +539,7 @@ struct hdd_ipa_priv {
#define HDD_IPA_CHECK_HW() 0
#endif /* IPA3 */
#define HDD_IPA_DBG_DUMP_RX_LEN 32
#define HDD_IPA_DBG_DUMP_RX_LEN 84
#define HDD_IPA_DBG_DUMP_TX_LEN 48
static struct hdd_ipa_adapter_2_client {
@ -1636,8 +1636,6 @@ static void __hdd_ipa_uc_stat_query(struct hdd_context *hdd_ctx,
(false == hdd_ipa->resource_loading)) {
*ipa_tx_diff = hdd_ipa->ipa_tx_packets_diff;
*ipa_rx_diff = hdd_ipa->ipa_rx_packets_diff;
hdd_debug("STAT Query TX DIFF %d, RX DIFF %d",
*ipa_tx_diff, *ipa_rx_diff);
}
qdf_mutex_release(&hdd_ipa->ipa_lock);
}
@ -1685,7 +1683,6 @@ static void __hdd_ipa_uc_stat_request(struct hdd_adapter *adapter,
return;
}
hdd_debug("STAT REQ Reason %d", reason);
qdf_mutex_acquire(&hdd_ipa->ipa_lock);
if ((HDD_IPA_UC_NUM_WDI_PIPE == hdd_ipa->activated_fw_pipe) &&
(false == hdd_ipa->resource_loading)) {
@ -3931,11 +3928,14 @@ static enum hdd_ipa_forward_type hdd_ipa_intrabss_forward(
qdf_nbuf_t skb)
{
int ret = HDD_IPA_FORWARD_PKT_NONE;
void *soc = cds_get_context(QDF_MODULE_ID_SOC);
struct ol_txrx_pdev_t *pdev = cds_get_context(QDF_MODULE_ID_TXRX);
if ((desc & FW_RX_DESC_FORWARD_M)) {
if (!ol_txrx_fwd_desc_thresh_check(
(struct ol_txrx_vdev_t *)ol_txrx_get_vdev_from_vdev_id(
adapter->sessionId))) {
(struct ol_txrx_vdev_t *)cdp_get_vdev_from_vdev_id(soc,
(struct cdp_pdev *)pdev,
adapter->sessionId))) {
/* Drop the packet*/
hdd_ipa->stats.num_tx_fwd_err++;
kfree_skb(skb);
@ -4761,6 +4761,8 @@ static int hdd_ipa_setup_iface(struct hdd_ipa_priv *hdd_ipa,
struct hdd_adapter *adapter, uint8_t sta_id)
{
struct hdd_ipa_iface_context *iface_context = NULL;
void *soc = cds_get_context(QDF_MODULE_ID_SOC);
struct ol_txrx_pdev_t *pdev = cds_get_context(QDF_MODULE_ID_TXRX);
void *tl_context = NULL;
int i, ret = 0;
@ -4792,7 +4794,7 @@ static int hdd_ipa_setup_iface(struct hdd_ipa_priv *hdd_ipa,
iface_context->adapter = adapter;
iface_context->sta_id = sta_id;
tl_context = (void *)cdp_peer_get_vdev_by_sta_id(
cds_get_context(QDF_MODULE_ID_SOC), sta_id);
soc, (struct cdp_pdev *)pdev, sta_id);
if (tl_context == NULL) {
HDD_IPA_LOG(QDF_TRACE_LEVEL_ERROR,
"Not able to get TL context sta_id: %d", sta_id);