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:

committed by
Manjunathappa Prakash

parent
e86da7276c
commit
b3e1a44d0b
@@ -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
|
||||||
|
@@ -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);
|
||||||
|
@@ -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)
|
||||||
|
@@ -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;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -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;
|
||||||
|
@@ -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;
|
||||||
|
Reference in New Issue
Block a user