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
کامیت شده توسط Manjunathappa Prakash
والد e86da7276c
کامیت b3e1a44d0b
6فایلهای تغییر یافته به همراه42 افزوده شده و 22 حذف شده

مشاهده پرونده

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

مشاهده پرونده

@@ -783,6 +783,9 @@ QDF_STATUS cds_open(struct wlan_objmgr_psoc *psoc)
TARGET_TYPE_QCA6490,
TARGET_TYPE_QCA6750);
/* Set default value to false */
hdd_ctx->is_wifi3_0_target = false;
if (TARGET_TYPE_QCA6290 == hdd_ctx->target_type ||
TARGET_TYPE_QCA6390 == 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;
goto err_soc_detach;
}
}
else
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;
}
hdd_ctx->is_wifi3_0_target = true;
} else {
gp_cds_context->dp_soc = cdp_soc_attach(MOB_DRV_LEGACY_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) {
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 ||
hdd_ctx->target_type == TARGET_TYPE_QCA6390 ||
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),
gp_cds_context->htc_ctx,
gp_cds_context->qdf_ctx, 0);

مشاهده پرونده

@@ -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
* 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(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
htt_rx_parse_ppdu_start_status(struct htt_host_rx_desc_base *rx_desc,
struct ieee80211_rx_status *rs)

مشاهده پرونده

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

مشاهده پرونده

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

مشاهده پرونده

@@ -1922,12 +1922,12 @@ static void hdd_qdf_lro_flush(void *data)
/**
* hdd_register_rx_ol() - Register LRO/GRO rx processing callbacks
* @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
*/
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);
@@ -1944,7 +1944,7 @@ static void hdd_register_rx_ol_cb(struct hdd_context *hdd_ctx,
hdd_debug("LRO is enabled");
} else if (hdd_ctx->ol_enable == CFG_GRO_ENABLED) {
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 */
hdd_ctx->receive_offload_cb = hdd_gro_rx_dp_thread;
} 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 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_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);
if (ret) {
hdd_ctx->ol_enable = 0;