qcacld-3.0: Init-Deinit changes for WCN7850

Changes to initialize/deinitalize WCN7850 from HDD layer.

CRs-Fixed: 2888534
Change-Id: Ia9e44f9fe0b4b6977c55c380756af0656203e4f5
This commit is contained in:
Rakesh Pillai
2020-12-25 23:31:02 -08:00
committed by Manjunathappa Prakash
parent e86da7276c
commit b3e1a44d0b
6 changed files with 42 additions and 22 deletions

View File

@@ -27,6 +27,7 @@
#ifdef QCA_SUPPORT_CP_STATS #ifdef QCA_SUPPORT_CP_STATS
#include "wlan_cp_stats_mc_defs.h" #include "wlan_cp_stats_mc_defs.h"
//TODO - Check if this is true for hamilton
#ifdef QCA_WIFI_QCA6490 #ifdef QCA_WIFI_QCA6490
#define TGT_MAC_ID_24G 2 #define TGT_MAC_ID_24G 2
#define TGT_MAC_ID_5G 1 #define TGT_MAC_ID_5G 1

View File

@@ -783,6 +783,9 @@ QDF_STATUS cds_open(struct wlan_objmgr_psoc *psoc)
TARGET_TYPE_QCA6490, TARGET_TYPE_QCA6490,
TARGET_TYPE_QCA6750); TARGET_TYPE_QCA6750);
/* Set default value to false */
hdd_ctx->is_wifi3_0_target = false;
if (TARGET_TYPE_QCA6290 == hdd_ctx->target_type || if (TARGET_TYPE_QCA6290 == hdd_ctx->target_type ||
TARGET_TYPE_QCA6390 == hdd_ctx->target_type || TARGET_TYPE_QCA6390 == hdd_ctx->target_type ||
TARGET_TYPE_QCA6490 == hdd_ctx->target_type || TARGET_TYPE_QCA6490 == hdd_ctx->target_type ||
@@ -802,12 +805,32 @@ QDF_STATUS cds_open(struct wlan_objmgr_psoc *psoc)
status = QDF_STATUS_E_FAILURE; status = QDF_STATUS_E_FAILURE;
goto err_soc_detach; goto err_soc_detach;
} }
hdd_ctx->is_wifi3_0_target = true;
} else if (hdd_ctx->target_type == TARGET_TYPE_WCN7850) {
gp_cds_context->dp_soc =
cdp_soc_attach(BERYLLIUM_DP,
gp_cds_context->hif_context,
htcInfo.target_psoc,
gp_cds_context->htc_ctx,
gp_cds_context->qdf_ctx,
&dp_ol_if_ops);
if (gp_cds_context->dp_soc)
if (!cdp_soc_init(gp_cds_context->dp_soc, BERYLLIUM_DP,
gp_cds_context->hif_context,
htcInfo.target_psoc,
gp_cds_context->htc_ctx,
gp_cds_context->qdf_ctx,
&dp_ol_if_ops)) {
status = QDF_STATUS_E_FAILURE;
goto err_soc_detach;
} }
else hdd_ctx->is_wifi3_0_target = true;
} else {
gp_cds_context->dp_soc = cdp_soc_attach(MOB_DRV_LEGACY_DP, gp_cds_context->dp_soc = cdp_soc_attach(MOB_DRV_LEGACY_DP,
gp_cds_context->hif_context, htcInfo.target_psoc, gp_cds_context->hif_context, htcInfo.target_psoc,
gp_cds_context->htc_ctx, gp_cds_context->qdf_ctx, gp_cds_context->htc_ctx, gp_cds_context->qdf_ctx,
&dp_ol_if_ops); &dp_ol_if_ops);
}
if (!gp_cds_context->dp_soc) { if (!gp_cds_context->dp_soc) {
status = QDF_STATUS_E_FAILURE; status = QDF_STATUS_E_FAILURE;
@@ -926,7 +949,8 @@ QDF_STATUS cds_dp_open(struct wlan_objmgr_psoc *psoc)
if (hdd_ctx->target_type == TARGET_TYPE_QCA6290 || if (hdd_ctx->target_type == TARGET_TYPE_QCA6290 ||
hdd_ctx->target_type == TARGET_TYPE_QCA6390 || hdd_ctx->target_type == TARGET_TYPE_QCA6390 ||
hdd_ctx->target_type == TARGET_TYPE_QCA6490 || hdd_ctx->target_type == TARGET_TYPE_QCA6490 ||
hdd_ctx->target_type == TARGET_TYPE_QCA6750) { hdd_ctx->target_type == TARGET_TYPE_QCA6750 ||
hdd_ctx->target_type == TARGET_TYPE_WCN7850) {
qdf_status = cdp_pdev_init(cds_get_context(QDF_MODULE_ID_SOC), qdf_status = cdp_pdev_init(cds_get_context(QDF_MODULE_ID_SOC),
gp_cds_context->htc_ctx, gp_cds_context->htc_ctx,
gp_cds_context->qdf_ctx, 0); gp_cds_context->qdf_ctx, 0);

View File

@@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2011-2020 The Linux Foundation. All rights reserved. * Copyright (c) 2011-2021 The Linux Foundation. All rights reserved.
* *
* Permission to use, copy, modify, and/or distribute this software for * Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the * any purpose with or without fee is hereby granted, provided that the
@@ -722,7 +722,8 @@ next_pop:
#if defined(FEATURE_MONITOR_MODE_SUPPORT) #if defined(FEATURE_MONITOR_MODE_SUPPORT)
#if !defined(QCA6290_HEADERS_DEF) && !defined(QCA6390_HEADERS_DEF) && \ #if !defined(QCA6290_HEADERS_DEF) && !defined(QCA6390_HEADERS_DEF) && \
!defined(QCA6490_HEADERS_DEF) && !defined(QCA6750_HEADERS_DEF) !defined(QCA6490_HEADERS_DEF) && !defined(QCA6750_HEADERS_DEF) && \
!defined(WCN7850_HEADERS_DEF)
static void static void
htt_rx_parse_ppdu_start_status(struct htt_host_rx_desc_base *rx_desc, htt_rx_parse_ppdu_start_status(struct htt_host_rx_desc_base *rx_desc,
struct ieee80211_rx_status *rs) struct ieee80211_rx_status *rs)

View File

@@ -2215,6 +2215,7 @@ struct hdd_context {
#ifdef WLAN_SUPPORT_TWT #ifdef WLAN_SUPPORT_TWT
qdf_work_t twt_en_dis_work; qdf_work_t twt_en_dis_work;
#endif #endif
bool is_wifi3_0_target;
}; };
/** /**

View File

@@ -14460,11 +14460,11 @@ int hdd_configure_cds(struct hdd_context *hdd_ctx)
if (ret) if (ret)
goto cds_disable; goto cds_disable;
/* Donot disable rx offload on concurrency for lithium based targets */ /*
if (!(hdd_ctx->target_type == TARGET_TYPE_QCA6290 || * Donot disable rx offload on concurrency for lithium and
hdd_ctx->target_type == TARGET_TYPE_QCA6390 || * beryllium based targets
hdd_ctx->target_type == TARGET_TYPE_QCA6490 || */
hdd_ctx->target_type == TARGET_TYPE_QCA6750)) if (!hdd_ctx->is_wifi3_0_target)
if (hdd_ctx->ol_enable) if (hdd_ctx->ol_enable)
dp_cbs.hdd_disable_rx_ol_in_concurrency = dp_cbs.hdd_disable_rx_ol_in_concurrency =
hdd_disable_rx_ol_in_concurrency; hdd_disable_rx_ol_in_concurrency;

View File

@@ -1922,12 +1922,12 @@ static void hdd_qdf_lro_flush(void *data)
/** /**
* hdd_register_rx_ol() - Register LRO/GRO rx processing callbacks * hdd_register_rx_ol() - Register LRO/GRO rx processing callbacks
* @hdd_ctx: pointer to hdd_ctx * @hdd_ctx: pointer to hdd_ctx
* @lithium_based_target: whether its a lithium arch based target or not * @wifi3_0_target: whether its a lithium/beryllium arch based target or not
* *
* Return: none * Return: none
*/ */
static void hdd_register_rx_ol_cb(struct hdd_context *hdd_ctx, static void hdd_register_rx_ol_cb(struct hdd_context *hdd_ctx,
bool lithium_based_target) bool wifi3_0_target)
{ {
void *soc = cds_get_context(QDF_MODULE_ID_SOC); void *soc = cds_get_context(QDF_MODULE_ID_SOC);
@@ -1944,7 +1944,7 @@ static void hdd_register_rx_ol_cb(struct hdd_context *hdd_ctx,
hdd_debug("LRO is enabled"); hdd_debug("LRO is enabled");
} else if (hdd_ctx->ol_enable == CFG_GRO_ENABLED) { } else if (hdd_ctx->ol_enable == CFG_GRO_ENABLED) {
qdf_atomic_set(&hdd_ctx->dp_agg_param.rx_aggregation, 1); qdf_atomic_set(&hdd_ctx->dp_agg_param.rx_aggregation, 1);
if (lithium_based_target) { if (wifi3_0_target) {
/* no flush registration needed, it happens in DP thread */ /* no flush registration needed, it happens in DP thread */
hdd_ctx->receive_offload_cb = hdd_gro_rx_dp_thread; hdd_ctx->receive_offload_cb = hdd_gro_rx_dp_thread;
} else { } else {
@@ -2011,18 +2011,11 @@ static int hdd_rx_ol_send_config(struct hdd_context *hdd_ctx)
int hdd_rx_ol_init(struct hdd_context *hdd_ctx) int hdd_rx_ol_init(struct hdd_context *hdd_ctx)
{ {
int ret = 0; int ret = 0;
bool lithium_based_target = false;
if (hdd_ctx->target_type == TARGET_TYPE_QCA6290 ||
hdd_ctx->target_type == TARGET_TYPE_QCA6390 ||
hdd_ctx->target_type == TARGET_TYPE_QCA6490 ||
hdd_ctx->target_type == TARGET_TYPE_QCA6750)
lithium_based_target = true;
hdd_resolve_rx_ol_mode(hdd_ctx); hdd_resolve_rx_ol_mode(hdd_ctx);
hdd_register_rx_ol_cb(hdd_ctx, lithium_based_target); hdd_register_rx_ol_cb(hdd_ctx, hdd_ctx->is_wifi3_0_target);
if (!lithium_based_target) { if (!hdd_ctx->is_wifi3_0_target) {
ret = hdd_rx_ol_send_config(hdd_ctx); ret = hdd_rx_ol_send_config(hdd_ctx);
if (ret) { if (ret) {
hdd_ctx->ol_enable = 0; hdd_ctx->ol_enable = 0;