qcacld-3.0: Add legacy DP CFG items and APIs

Add the basic infra for legacy DP CFG items and the APIs
to be used from other components.

Change-Id: If7ad0e02c65e04ea13a308e680c9ba3b3d84ae25
CRs-Fixed: 2324099
This commit is contained in:
jitiphil
2018-10-05 19:46:08 +05:30
committed by nshrivas
부모 ce205098f5
커밋 377bcc1227
16개의 변경된 파일261개의 추가작업 그리고 389개의 파일을 삭제

파일 보기

@@ -44,6 +44,7 @@
#include "wlan_pmo_cfg.h"
#include "hdd_config.h"
#include "hdd_dp_cfg.h"
#include "cfg_legacy_dp.h"
/* Maintain Alphabetic order here while adding components */
#define CFG_ALL \
@@ -53,6 +54,7 @@
CFG_HDD_ALL \
CFG_HDD_DP_ALL \
CFG_IPA \
CFG_LEGACY_DP_ALL \
CFG_MLME_ALL \
CFG_NAN_ALL \
CFG_P2P_ALL \

파일 보기

@@ -69,6 +69,7 @@
#include <target_if_dp.h>
#endif
#include "wlan_mlme_ucfg_api.h"
#include "cfg_ucfg_api.h"
/* Preprocessor Definitions and Constants */
@@ -295,16 +296,17 @@ cds_cfg_update_ac_specs_params(struct txrx_pdev_cfg_param_t *olcfg,
#ifdef QCA_LL_TX_FLOW_CONTROL_V2
static inline void
cds_cdp_set_flow_control_params(struct cds_config_info *cds_cfg,
cds_cdp_set_flow_control_params(struct wlan_objmgr_psoc *psoc,
struct txrx_pdev_cfg_param_t *cdp_cfg)
{
cdp_cfg->tx_flow_stop_queue_th = cds_cfg->tx_flow_stop_queue_th;
cdp_cfg->tx_flow_stop_queue_th =
cfg_get(psoc, CFG_DP_TX_FLOW_STOP_QUEUE_TH);
cdp_cfg->tx_flow_start_queue_offset =
cds_cfg->tx_flow_start_queue_offset;
cfg_get(psoc, CFG_DP_TX_FLOW_START_QUEUE_OFFSET);
}
#else
static inline void
cds_cdp_set_flow_control_params(struct cds_config_info *cds_cfg,
cds_cdp_set_flow_control_params(struct wlan_objmgr_psoc *psoc,
struct txrx_pdev_cfg_param_t *cdp_cfg)
{}
#endif
@@ -315,23 +317,41 @@ cds_cdp_set_flow_control_params(struct cds_config_info *cds_cfg,
*
* Return: none
*/
static void cds_cdp_cfg_attach(struct cds_config_info *cds_cfg)
static void cds_cdp_cfg_attach(struct wlan_objmgr_psoc *psoc)
{
struct txrx_pdev_cfg_param_t cdp_cfg = {0};
void *soc = cds_get_context(QDF_MODULE_ID_SOC);
struct hdd_context *hdd_ctx = gp_cds_context->hdd_context;
cdp_cfg.is_full_reorder_offload = cds_cfg->reorder_offload;
cdp_cfg.is_uc_offload_enabled = cds_cfg->uc_offload_enabled;
cdp_cfg.uc_tx_buffer_count = ucfg_ipa_get_tx_buf_count();
cdp_cfg.uc_tx_buffer_size = cds_cfg->uc_txbuf_size;
cdp_cfg.uc_rx_indication_ring_count = cds_cfg->uc_rxind_ringcount;
cdp_cfg.uc_tx_partition_base = cds_cfg->uc_tx_partition_base;
cdp_cfg.enable_rxthread = cds_cfg->enable_rxthread;
cdp_cfg.is_full_reorder_offload =
cfg_get(psoc, CFG_DP_REORDER_OFFLOAD_SUPPORT);
cdp_cfg.is_uc_offload_enabled = ucfg_ipa_uc_is_enabled();
cdp_cfg.uc_tx_buffer_count = cfg_get(psoc, CFG_DP_IPA_UC_TX_BUF_COUNT);
cdp_cfg.uc_tx_buffer_size =
cfg_get(psoc, CFG_DP_IPA_UC_TX_BUF_SIZE);
cdp_cfg.uc_rx_indication_ring_count =
cfg_get(psoc, CFG_DP_IPA_UC_RX_IND_RING_COUNT);
cdp_cfg.uc_tx_partition_base =
cfg_get(psoc, CFG_DP_IPA_UC_TX_PARTITION_BASE);
cdp_cfg.enable_rxthread = hdd_ctx->enable_rxthread;
cdp_cfg.ip_tcp_udp_checksum_offload =
cds_cfg->ip_tcp_udp_checksum_offload;
cdp_cfg.ce_classify_enabled = cds_cfg->ce_classify_enabled;
cfg_get(psoc, CFG_DP_TCP_UDP_CKSUM_OFFLOAD);
cdp_cfg.ce_classify_enabled =
cfg_get(psoc, CFG_DP_CE_CLASSIFY_ENABLE);
cdp_cfg.tso_enable = cfg_get(psoc, CFG_DP_TSO);
cdp_cfg.lro_enable = cfg_get(psoc, CFG_DP_LRO);
cdp_cfg.enable_data_stall_detection =
cfg_get(psoc, CFG_DP_ENABLE_DATA_STALL_DETECTION);
cdp_cfg.tso_enable = cfg_get(psoc, CFG_DP_TSO);
cdp_cfg.lro_enable = cfg_get(psoc, CFG_DP_LRO);
cdp_cfg.gro_enable = cfg_get(psoc, CFG_DP_GRO);
cdp_cfg.enable_flow_steering =
cfg_get(psoc, CFG_DP_FLOW_STEERING_ENABLED);
cdp_cfg.disable_intra_bss_fwd =
cfg_get(psoc, CFG_DP_AP_STA_SECURITY_SEPERATION);
cdp_cfg.ce_classify_enabled =
cfg_get(psoc, CFG_DP_CE_CLASSIFY_ENABLE);
cds_cfg_update_ac_specs_params(&cdp_cfg, cds_cfg);
gp_cds_context->cfg_ctx = cdp_cfg_attach(soc, gp_cds_context->qdf_ctx,
(void *)(&cdp_cfg));
if (!gp_cds_context->cfg_ctx) {
@@ -341,15 +361,16 @@ static void cds_cdp_cfg_attach(struct cds_config_info *cds_cfg)
/* Configure Receive flow steering */
cdp_cfg_set_flow_steering(soc, gp_cds_context->cfg_ctx,
cds_cfg->flow_steering_enabled);
cfg_get(psoc, CFG_DP_FLOW_STEERING_ENABLED));
cds_cdp_set_flow_control_params(cds_cfg, &cdp_cfg);
cds_cdp_set_flow_control_params(psoc, &cdp_cfg);
cdp_cfg_set_flow_control_parameters(soc, gp_cds_context->cfg_ctx,
(void *)&cdp_cfg);
/* adjust the cfg_ctx default value based on setting */
cdp_cfg_set_rx_fwd_disabled(soc, gp_cds_context->cfg_ctx,
(uint8_t) cds_cfg->ap_disable_intrabss_fwd);
cfg_get(psoc,
CFG_DP_AP_STA_SECURITY_SEPERATION));
/*
* adjust the packet log enable default value
@@ -521,7 +542,7 @@ QDF_STATUS cds_open(struct wlan_objmgr_psoc *psoc)
goto err_sched_close;
}
hdd_enable_fastpath(hdd_ctx->config, scn);
hdd_enable_fastpath(hdd_ctx, scn);
/* Initialize BMI and Download firmware */
ol_ctx = cds_get_context(QDF_MODULE_ID_BMI);
@@ -622,8 +643,9 @@ QDF_STATUS cds_open(struct wlan_objmgr_psoc *psoc)
ucfg_ocb_update_dp_handle(psoc, gp_cds_context->dp_soc);
cds_set_ac_specs_params(cds_cfg);
cds_cdp_cfg_attach(cds_cfg);
cds_cfg_update_ac_specs_params((struct txrx_pdev_cfg_param_t *)
gp_cds_context->cfg_ctx, cds_cfg);
cds_cdp_cfg_attach(psoc);
bmi_target_ready(scn, gp_cds_context->cfg_ctx);

파일 보기

@@ -0,0 +1,54 @@
/*
* Copyright (c) 2012-2018 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
* above copyright notice and this permission notice appear in all
* copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
* WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
* AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
* DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
* PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*/
#ifndef __CFG_LEGACY_DP
#define __CFG_LEGACY_DP
#include "cfg_define.h"
#include "cfg_converged.h"
#include "qdf_types.h"
/*
* <ini>
* gEnableFlowSteering - Enable rx traffic flow steering
* @Default: false
*
* Enable Rx traffic flow steering to enable Rx interrupts on multiple CEs based
* on the flows. Different CEs<==>different IRQs<==>probably different CPUs.
* Parallel Rx paths.
* 1 - enable 0 - disable
*
* Usage: Internal
*
* </ini>
*/
#define CFG_DP_FLOW_STEERING_ENABLED \
CFG_INI_BOOL( \
"gEnableFlowSteering", \
false, \
"")
#define CFG_DP_CE_CLASSIFY_ENABLE \
CFG_INI_BOOL("gCEClassifyEnable", \
true, "enable CE classify")
#define CFG_LEGACY_DP_ALL \
CFG(CFG_DP_FLOW_STEERING_ENABLED) \
CFG(CFG_DP_CE_CLASSIFY_ENABLE)
#endif

파일 보기

@@ -97,6 +97,18 @@ struct txrx_pdev_cfg_t {
*/
u8 credit_update_enabled;
struct ol_tx_sched_wrr_ac_specs_t ac_specs[TX_WMM_AC_NUM];
bool gro_enable;
bool tso_enable;
bool lro_enable;
bool enable_data_stall_detection;
bool enable_flow_steering;
bool disable_intra_bss_fwd;
/* IPA Micro controller data path offload TX buffer size */
uint32_t uc_tx_buffer_size;
/* IPA Micro controller data path offload RX indication ring count */
uint32_t uc_rx_indication_ring_count;
/* IPA Micro controller data path offload TX partition base */
uint32_t uc_tx_partition_base;
};
/**

파일 보기

@@ -155,6 +155,13 @@ struct cdp_cfg *ol_pdev_cfg_attach(qdf_device_t osdev, void *pcfg_param)
cfg_ctx->ip_tcp_udp_checksum_offload =
cfg_param->ip_tcp_udp_checksum_offload;
cfg_ctx->ce_classify_enabled = cfg_param->ce_classify_enabled;
cfg_ctx->gro_enable = cfg_param->gro_enable;
cfg_ctx->tso_enable = cfg_param->tso_enable;
cfg_ctx->lro_enable = cfg_param->lro_enable;
cfg_ctx->enable_data_stall_detection =
cfg_param->enable_data_stall_detection;
cfg_ctx->enable_flow_steering = cfg_param->enable_flow_steering;
cfg_ctx->disable_intra_bss_fwd = cfg_param->disable_intra_bss_fwd;
ol_tx_set_flow_control_parameters((struct cdp_cfg *)cfg_ctx, cfg_param);

파일 보기

@@ -79,6 +79,8 @@
#include <htt_internal.h>
#include <ol_txrx_ipa.h>
#include "wlan_roam_debug.h"
#include "cfg_ucfg_api.h"
#define DPT_DEBUGFS_PERMS (QDF_FILE_USR_READ | \
QDF_FILE_USR_WRITE | \
@@ -5311,6 +5313,73 @@ ol_txrx_wrapper_set_flow_control_parameters(struct cdp_cfg *cfg_pdev,
(struct txrx_pdev_cfg_param_t *)cfg_param);
}
/**
* ol_txrx_get_cfg() - get ini/cgf values in legacy dp
* @soc: soc context
* @cfg_param: cfg parameters
*
* Return: none
*/
static uint32_t ol_txrx_get_cfg(void *soc, enum cdp_dp_cfg cfg)
{
struct txrx_pdev_cfg_t *cfg_ctx;
ol_txrx_pdev_handle pdev = cds_get_context(QDF_MODULE_ID_TXRX);
uint32_t value = 0;
cfg_ctx = (struct txrx_pdev_cfg_t *)(pdev->ctrl_pdev);
switch (cfg) {
case cfg_dp_enable_data_stall:
value = cfg_ctx->enable_data_stall_detection;
break;
case cfg_dp_enable_ip_tcp_udp_checksum_offload:
value = cfg_ctx->ip_tcp_udp_checksum_offload;
break;
case cfg_dp_tso_enable:
value = cfg_ctx->tso_enable;
break;
case cfg_dp_lro_enable:
value = cfg_ctx->lro_enable;
break;
case cfg_dp_gro_enable:
value = cfg_ctx->gro_enable;
break;
#ifdef QCA_LL_TX_FLOW_CONTROL_V2
case cfg_dp_tx_flow_start_queue_offset:
value = cfg_ctx->tx_flow_start_queue_offset;
break;
case cfg_dp_tx_flow_stop_queue_threshold:
value = cfg_ctx->tx_flow_stop_queue_th;
break;
#endif
case cfg_dp_ipa_uc_tx_buf_size:
value = cfg_ctx->uc_tx_buffer_size;
break;
case cfg_dp_ipa_uc_tx_partition_base:
value = cfg_ctx->uc_tx_partition_base;
break;
case cfg_dp_ipa_uc_rx_ind_ring_count:
value = cfg_ctx->uc_rx_indication_ring_count;
break;
case cfg_dp_enable_flow_steering:
value = cfg_ctx->enable_flow_steering;
break;
case cfg_dp_reorder_offload_supported:
value = cfg_ctx->is_full_reorder_offload;
break;
case cfg_dp_ce_classify_enable:
value = cfg_ctx->ce_classify_enabled;
break;
case cfg_dp_disable_intra_bss_fwd:
value = cfg_ctx->disable_intra_bss_fwd;
break;
default:
value = 0;
break;
}
return value;
}
#ifdef WDI_EVENT_ENABLE
void *ol_get_pldev(struct cdp_pdev *txrx_pdev)
{
@@ -5348,6 +5417,7 @@ static struct cdp_cmn_ops ol_ops_cmn = {
.flush_cache_rx_queue = ol_txrx_flush_cache_rx_queue,
.txrx_fw_stats_get = ol_txrx_fw_stats_get,
.display_stats = ol_txrx_display_stats,
.txrx_get_cfg = ol_txrx_get_cfg,
/* TODO: Add other functions */
};
@@ -5603,5 +5673,3 @@ struct cdp_soc_t *ol_txrx_soc_attach(void *scn_handle,
soc->ops = &ol_txrx_ops;
return soc;
}

파일 보기

@@ -752,6 +752,27 @@
CFG_VALUE_OR_DEFAULT, \
"Control to decide rx mode for packet procesing")
#define CFG_DP_CE_SERVICE_MAX_RX_IND_FLUSH \
CFG_INI_UINT("ce_service_max_rx_ind_flush", \
1, 32, 32, \
CFG_VALUE_OR_DEFAULT, "Ctrl to set ce service max rx ind flsh")
#define CFG_DP_CE_SERVICE_MAX_YIELD_TIME \
CFG_INI_UINT("ce_service_max_yield_time", \
500, 10000, 10000, \
CFG_VALUE_OR_DEFAULT, "Ctrl to set ce service max yield time")
#ifdef WLAN_FEATURE_FASTPATH
#define CFG_DP_ENABLE_FASTPATH \
CFG_INI_BOOL("gEnableFastPath", \
false, "Ctrl to enable fastpath feature")
#define CFG_DP_ENABLE_FASTPATH_ALL \
CFG(CFG_DP_ENABLE_FASTPATH)
#else
#define CFG_DP_ENABLE_FASTPATH_ALL
#endif
#ifdef QCA_LL_LEGACY_TX_FLOW_CONTROL
#define CFG_HDD_DP_LEGACY_TX_FLOW \
CFG(CFG_DP_LL_TX_FLOW_LWM) \
@@ -789,7 +810,10 @@
CFG(CFG_DP_RX_THREAD_CPU_MASK) \
CFG(CFG_DP_RPS_RX_QUEUE_CPU_MAP_LIST) \
CFG(CFG_DP_TX_ORPHAN_ENABLE) \
CFG(CFG_DP_RX_MODE)
CFG(CFG_DP_RX_MODE) \
CFG(CFG_DP_CE_SERVICE_MAX_RX_IND_FLUSH) \
CFG(CFG_DP_CE_SERVICE_MAX_YIELD_TIME) \
CFG_DP_ENABLE_FASTPATH_ALL
#define CFG_HDD_DP_ALL \
CFG_HDD_DP \
CFG_HDD_DP_MSM_PLATFORM \

파일 보기

@@ -3810,24 +3810,6 @@ enum hdd_link_speed_rpt_type {
#define CFG_ENABLE_SSR_MAX (1)
#define CFG_ENABLE_SSR_DEFAULT (1)
/**
* <ini>
* gEnableDataStallDetection - Enable/Disable Data stall detection
* @Min: 0
* @Max: 1
* @Default: 1
*
* This ini is used to enable/disable data stall detection
*
* Usage: Internal/External
*
* </ini>
*/
#define CFG_ENABLE_DATA_STALL_DETECTION "gEnableDataStallDetection"
#define CFG_ENABLE_DATA_STALL_DETECTION_MIN (0)
#define CFG_ENABLE_DATA_STALL_DETECTION_MAX (1)
#define CFG_ENABLE_DATA_STALL_DETECTION_DEFAULT (1)
/*
* <ini>
* gEnableOverLapCh - Enables Overlap Channel. If set, allow overlapping
@@ -4417,55 +4399,6 @@ enum hdd_link_speed_rpt_type {
#define CFG_ENABLE_SNR_MONITORING_MAX (1)
#define CFG_ENABLE_SNR_MONITORING_DEFAULT (0)
/*
* <ini>
* gEnableIpTcpUdpChecksumOffload - It enables IP, TCP and UDP checksum
* offload in hardware
* @Min: 0
* @Max: 1
* @Default: DEF
*
* This ini is used to enable IP, TCP and UDP checksum offload in hardware
* and also advertise same to network stack
*
* Related: None
*
* Supported Feature: STA
*
* Usage: Internal/External
*
* </ini>
*/
#define CFG_ENABLE_IP_TCP_UDP_CHKSUM_OFFLOAD "gEnableIpTcpUdpChecksumOffload"
#define CFG_ENABLE_IP_TCP_UDP_CHKSUM_OFFLOAD_DISABLE (0)
#define CFG_ENABLE_IP_TCP_UDP_CHKSUM_OFFLOAD_ENABLE (1)
#define CFG_ENABLE_IP_TCP_UDP_CHKSUM_OFFLOAD_DEFAULT (CFG_ENABLE_IP_TCP_UDP_CHKSUM_OFFLOAD_ENABLE)
#ifdef WLAN_FEATURE_FASTPATH
/*
* <ini>
* gEnableFastPath - Control to enable fastpath feature
*
* @Min: 0
* @Max: 1
* @Default: 0
*
* This ini is used to enable fastpath feature
*
* Supported Feature: Wlan Fastpath Feature
*
* Usage: Internal
*
* </ini>
*/
#define CFG_ENABLE_FASTPATH "gEnableFastPath"
#define CFG_ENABLE_FASTPATH_MIN (0)
#define CFG_ENABLE_FASTPATH_MAX (1)
#define CFG_ENABLE_FASTPATH_DEFAULT (CFG_ENABLE_FASTPATH_MIN)
#endif /* WLAN_FEATURE_FASTPATH */
/* SAR Thermal limit values for 2g and 5g */
#define CFG_SET_TXPOWER_LIMIT2G_NAME "TxPower2g"
@@ -4729,22 +4662,6 @@ enum hdd_link_speed_rpt_type {
#define CFG_REORDER_OFFLOAD_SUPPORT_MAX (1)
#define CFG_REORDER_OFFLOAD_SUPPORT_DEFAULT (1)
#define CFG_IPA_UC_TX_BUF_SIZE_NAME "IpaUcTxBufSize"
#define CFG_IPA_UC_TX_BUF_SIZE_MIN (0)
#define CFG_IPA_UC_TX_BUF_SIZE_MAX (4096)
#define CFG_IPA_UC_TX_BUF_SIZE_DEFAULT (2048)
/* IpaUcRxIndRingCount should be power of 2 */
#define CFG_IPA_UC_RX_IND_RING_COUNT_NAME "IpaUcRxIndRingCount"
#define CFG_IPA_UC_RX_IND_RING_COUNT_MIN (0)
#define CFG_IPA_UC_RX_IND_RING_COUNT_MAX (2048)
#define CFG_IPA_UC_RX_IND_RING_COUNT_DEFAULT (1024)
#define CFG_IPA_UC_TX_PARTITION_BASE_NAME "IpaUcTxPartitionBase"
#define CFG_IPA_UC_TX_PARTITION_BASE_MIN (0)
#define CFG_IPA_UC_TX_PARTITION_BASE_MAX (9000)
#define CFG_IPA_UC_TX_PARTITION_BASE_DEFAULT (3000)
#define CFG_ENABLE_SAP_SUSPEND "gEnableSapSuspend"
#define CFG_ENABLE_SAP_SUSPEND_MIN (0)
#define CFG_ENABLE_SAP_SUSPEND_MAX (1)
@@ -4889,79 +4806,6 @@ enum hdd_link_speed_rpt_type {
/*
* <ini>
* TSOEnable - Control to enable tso feature
*
* @Min: 0
* @Max: 1
* @Default: 0
*
* This ini is used to enable TSO feature
*
* Supported Feature: TSO Feature
*
* Usage: Internal
*
* </ini>
*/
#define CFG_TSO_ENABLED_NAME "TSOEnable"
#define CFG_TSO_ENABLED_MIN (0)
#define CFG_TSO_ENABLED_MAX (1)
#define CFG_TSO_ENABLED_DEFAULT (0)
/*
* <ini>
* LROEnable - Control to enable lro feature
*
* @Min: 0
* @Max: 1
* @Default: 0
*
* This ini is used to enable LRO feature
*
* Supported Feature: LRO
*
* Usage: Internal
*
* </ini>
*/
#define CFG_LRO_ENABLED_NAME "LROEnable"
#define CFG_LRO_ENABLED_MIN (0)
#define CFG_LRO_ENABLED_MAX (1)
#define CFG_LRO_ENABLED_DEFAULT (0)
/*
* <ini>
* GROEnable - Control to enable gro feature
*
* @Disable: 0
* @Enable: 1
* @Default: 0
*
* This ini is used to enable GRO feature
*
* Supported Feature: GRO
*
* Usage: Internal
*
* </ini>
*/
#define CFG_GRO_ENABLED_NAME "GROEnable"
#define CFG_GRO_ENABLED_MIN (0)
#define CFG_GRO_ENABLED_MAX (1)
#define CFG_GRO_ENABLED_DEFAULT (0)
/*
* Enable Rx traffic flow steering to enable Rx interrupts on multiple CEs based
* on the flows. Different CEs<==>different IRQs<==>probably different CPUs.
* Parallel Rx paths.
* 1 - enable 0 - disable
*/
#define CFG_FLOW_STEERING_ENABLED_NAME "gEnableFlowSteering"
#define CFG_FLOW_STEERING_ENABLED_MIN (0)
#define CFG_FLOW_STEERING_ENABLED_MAX (1)
#define CFG_FLOW_STEERING_ENABLED_DEFAULT (0)
/*
* Max number of MSDUs per HTT RX IN ORDER INDICATION msg.
* Note that this has a direct impact on the size of source CE rings.
* It is possible to go below 8, but would require testing; so we are
@@ -5037,11 +4881,6 @@ enum hdd_link_speed_rpt_type {
#define CFG_ETSI13_SRD_CHAN_IN_MASTER_MODE_MIN (0)
#define CFG_ETSI13_SRD_CHAN_IN_MASTER_MODE_MAX (1)
#define CFG_CE_CLASSIFY_ENABLE_NAME "gCEClassifyEnable"
#define CFG_CE_CLASSIFY_ENABLE_MIN (0)
#define CFG_CE_CLASSIFY_ENABLE_MAX (1)
#define CFG_CE_CLASSIFY_ENABLE_DEFAULT (1)
/*
*
* <ini>
@@ -5410,48 +5249,6 @@ enum hdd_link_speed_rpt_type {
#define CFG_NUM_DP_RX_THREADS_MAX (4)
#define CFG_NUM_DP_RX_THREADS_DEFAULT (1)
/*
* <ini>
* ce_service_max_yield_time - Control to set ce service max yield time (in us)
*
* @Min: 500
* @Max: 10000
* @Default: 10000
*
* This ini is used to set ce service max yield time (in us)
*
* Supported Feature: NAPI
*
* Usage: Internal
*
* </ini>
*/
#define CFG_CE_SERVICE_MAX_YIELD_TIME_NAME "ce_service_max_yield_time"
#define CFG_CE_SERVICE_MAX_YIELD_TIME_MIN (500)
#define CFG_CE_SERVICE_MAX_YIELD_TIME_MAX (10000)
#define CFG_CE_SERVICE_MAX_YIELD_TIME_DEFAULT (10000)
/*
* <ini>
* ce_service_max_rx_ind_flush - Control to set ce service max rx ind flush
*
* @Min: 1
* @Max: 32
* @Default: 1
*
* This ini is used to set ce service max rx ind flush
*
* Supported Feature: NAPI
*
* Usage: Internal
*
* </ini>
*/
#define CFG_CE_SERVICE_MAX_RX_IND_FLUSH_NAME "ce_service_max_rx_ind_flush"
#define CFG_CE_SERVICE_MAX_RX_IND_FLUSH_MIN (1)
#define CFG_CE_SERVICE_MAX_RX_IND_FLUSH_MAX (32)
#define CFG_CE_SERVICE_MAX_RX_IND_FLUSH_DEFAULT (32)
/*
* Support to start sap in indoor channel
* Customer can config this item to enable/disable sap in indoor channel
@@ -7456,7 +7253,6 @@ struct hdd_config {
uint8_t scanAgingTimeout;
uint8_t disableLDPCWithTxbfAP;
bool enableSSR;
bool enable_data_stall_det;
bool bFastRoamInConIniFeatureEnabled;
bool fEnableSNRMonitoring;
/*PNO related parameters */
@@ -7477,8 +7273,6 @@ struct hdd_config {
uint32_t ibssTxSpEndInactivityTime;
uint32_t ibssPsWarmupTime;
uint32_t ibssPs1RxChainInAtimEnable;
bool enable_ip_tcp_udp_checksum_offload;
uint32_t IpaConfig;
bool IpaClkScalingEnable;
uint8_t disableDFSChSwitch;
@@ -7506,10 +7300,6 @@ struct hdd_config {
int32_t dfsRadarPriMultiplier;
uint8_t reorderOffloadSupport;
uint32_t IpaUcTxBufSize;
uint32_t IpaUcRxIndRingCount;
uint32_t IpaUcTxPartitionBase;
#ifdef FEATURE_WLAN_FORCE_SAP_SCC
uint8_t SapSccChanAvoidance;
#endif /* FEATURE_WLAN_FORCE_SAP_SCC */
@@ -7528,22 +7318,12 @@ struct hdd_config {
uint8_t sap_11ac_override;
uint8_t go_11ac_override;
uint8_t prefer_non_dfs_on_radar;
bool tso_enable;
bool lro_enable;
bool gro_enable;
bool flow_steering_enable;
uint8_t max_msdus_per_rxinorderind;
/* parameter for defer timer for enabling TDLS on p2p listen */
uint32_t fine_time_meas_cap;
uint8_t max_scan_count;
#ifdef WLAN_FEATURE_FASTPATH
bool fastpath_enable;
#endif
bool etsi13_srd_chan_in_master_mode;
uint8_t num_dp_rx_threads;
uint32_t ce_service_max_yield_time;
uint8_t ce_service_max_rx_ind_flush;
bool ce_classify_enabled;
uint32_t dual_mac_feature_disable;
uint8_t dbs_scan_selection[CFG_DBS_SCAN_PARAM_LENGTH];
uint32_t sta_sap_scc_on_dfs_chan;

파일 보기

@@ -2722,8 +2722,10 @@ int hdd_process_pktlog_command(struct hdd_context *hdd_ctx,
static inline void hdd_set_tso_flags(struct hdd_context *hdd_ctx,
struct net_device *wlan_dev)
{
if (hdd_ctx->config->tso_enable &&
hdd_ctx->config->enable_ip_tcp_udp_checksum_offload) {
if (cdp_cfg_get(cds_get_context(QDF_MODULE_ID_SOC),
cfg_dp_tso_enable) &&
cdp_cfg_get(cds_get_context(QDF_MODULE_ID_SOC),
cfg_dp_enable_ip_tcp_udp_checksum_offload)){
/*
* We want to enable TSO only if IP/UDP/TCP TX checksum flag is
* enabled.
@@ -2850,10 +2852,10 @@ void hdd_connect_result(struct net_device *dev, const u8 *bssid,
tSirResultCodes timeout_reason);
#ifdef WLAN_FEATURE_FASTPATH
void hdd_enable_fastpath(struct hdd_config *hdd_cfg,
void hdd_enable_fastpath(struct hdd_context *hdd_ctx,
void *context);
#else
static inline void hdd_enable_fastpath(struct hdd_config *hdd_cfg,
static inline void hdd_enable_fastpath(struct hdd_context *hdd_ctx,
void *context)
{
}

파일 보기

@@ -1731,13 +1731,6 @@ struct reg_table_entry g_registry_table[] = {
CFG_ENABLE_SSR_MAX,
cb_notify_set_enable_ssr, 0),
REG_VARIABLE(CFG_ENABLE_DATA_STALL_DETECTION, WLAN_PARAM_Integer,
struct hdd_config, enable_data_stall_det,
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
CFG_ENABLE_DATA_STALL_DETECTION_DEFAULT,
CFG_ENABLE_DATA_STALL_DETECTION_MIN,
CFG_ENABLE_DATA_STALL_DETECTION_MAX),
REG_DYNAMIC_VARIABLE(CFG_ENABLE_FAST_ROAM_IN_CONCURRENCY,
WLAN_PARAM_Integer,
struct hdd_config, bFastRoamInConIniFeatureEnabled,
@@ -1784,13 +1777,6 @@ struct reg_table_entry g_registry_table[] = {
CFG_MAX_AMSDU_NUM_MIN,
CFG_MAX_AMSDU_NUM_MAX),
REG_VARIABLE(CFG_ENABLE_IP_TCP_UDP_CHKSUM_OFFLOAD, WLAN_PARAM_Integer,
struct hdd_config, enable_ip_tcp_udp_checksum_offload,
VAR_FLAGS_OPTIONAL,
CFG_ENABLE_IP_TCP_UDP_CHKSUM_OFFLOAD_DEFAULT,
CFG_ENABLE_IP_TCP_UDP_CHKSUM_OFFLOAD_DISABLE,
CFG_ENABLE_IP_TCP_UDP_CHKSUM_OFFLOAD_ENABLE),
REG_VARIABLE(CFG_COALESING_IN_IBSS_NAME, WLAN_PARAM_Integer,
struct hdd_config, isCoalesingInIBSSAllowed,
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
@@ -1970,27 +1956,6 @@ struct reg_table_entry g_registry_table[] = {
CFG_REORDER_OFFLOAD_SUPPORT_MIN,
CFG_REORDER_OFFLOAD_SUPPORT_MAX),
REG_VARIABLE(CFG_IPA_UC_TX_BUF_SIZE_NAME, WLAN_PARAM_Integer,
struct hdd_config, IpaUcTxBufSize,
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
CFG_IPA_UC_TX_BUF_SIZE_DEFAULT,
CFG_IPA_UC_TX_BUF_SIZE_MIN,
CFG_IPA_UC_TX_BUF_SIZE_MAX),
REG_VARIABLE(CFG_IPA_UC_RX_IND_RING_COUNT_NAME, WLAN_PARAM_Integer,
struct hdd_config, IpaUcRxIndRingCount,
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
CFG_IPA_UC_RX_IND_RING_COUNT_DEFAULT,
CFG_IPA_UC_RX_IND_RING_COUNT_MIN,
CFG_IPA_UC_RX_IND_RING_COUNT_MAX),
REG_VARIABLE(CFG_IPA_UC_TX_PARTITION_BASE_NAME, WLAN_PARAM_Integer,
struct hdd_config, IpaUcTxPartitionBase,
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
CFG_IPA_UC_TX_PARTITION_BASE_DEFAULT,
CFG_IPA_UC_TX_PARTITION_BASE_MIN,
CFG_IPA_UC_TX_PARTITION_BASE_MAX),
REG_VARIABLE(CFG_ENABLE_SAP_SUSPEND, WLAN_PARAM_Integer,
struct hdd_config, enable_sap_suspend,
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
@@ -2059,34 +2024,6 @@ struct reg_table_entry g_registry_table[] = {
CFG_ENABLE_NON_DFS_CHAN_ON_RADAR_MIN,
CFG_ENABLE_NON_DFS_CHAN_ON_RADAR_MAX),
REG_VARIABLE(CFG_TSO_ENABLED_NAME, WLAN_PARAM_Integer,
struct hdd_config, tso_enable,
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
CFG_TSO_ENABLED_DEFAULT,
CFG_TSO_ENABLED_MIN,
CFG_TSO_ENABLED_MAX),
REG_VARIABLE(CFG_LRO_ENABLED_NAME, WLAN_PARAM_Integer,
struct hdd_config, lro_enable,
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
CFG_LRO_ENABLED_DEFAULT,
CFG_LRO_ENABLED_MIN,
CFG_LRO_ENABLED_MAX),
REG_VARIABLE(CFG_GRO_ENABLED_NAME, WLAN_PARAM_Integer,
struct hdd_config, gro_enable,
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
CFG_GRO_ENABLED_DEFAULT,
CFG_GRO_ENABLED_MIN,
CFG_GRO_ENABLED_MAX),
REG_VARIABLE(CFG_FLOW_STEERING_ENABLED_NAME, WLAN_PARAM_Integer,
struct hdd_config, flow_steering_enable,
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
CFG_FLOW_STEERING_ENABLED_DEFAULT,
CFG_FLOW_STEERING_ENABLED_MIN,
CFG_FLOW_STEERING_ENABLED_MAX),
REG_VARIABLE(CFG_MAX_MSDUS_PER_RXIND_NAME, WLAN_PARAM_Integer,
struct hdd_config, max_msdus_per_rxinorderind,
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
@@ -2101,14 +2038,6 @@ struct reg_table_entry g_registry_table[] = {
CFG_FINE_TIME_MEAS_CAPABILITY_MIN,
CFG_FINE_TIME_MEAS_CAPABILITY_MAX),
#ifdef WLAN_FEATURE_FASTPATH
REG_VARIABLE(CFG_ENABLE_FASTPATH, WLAN_PARAM_Integer,
struct hdd_config, fastpath_enable,
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
CFG_ENABLE_FASTPATH_DEFAULT,
CFG_ENABLE_FASTPATH_MIN,
CFG_ENABLE_FASTPATH_MAX),
#endif
REG_VARIABLE(CFG_MAX_SCAN_COUNT_NAME, WLAN_PARAM_Integer,
struct hdd_config, max_scan_count,
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
@@ -2123,13 +2052,6 @@ struct reg_table_entry g_registry_table[] = {
CFG_ETSI13_SRD_CHAN_IN_MASTER_MODE_MIN,
CFG_ETSI13_SRD_CHAN_IN_MASTER_MODE_MAX),
REG_VARIABLE(CFG_CE_CLASSIFY_ENABLE_NAME, WLAN_PARAM_Integer,
struct hdd_config, ce_classify_enabled,
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
CFG_CE_CLASSIFY_ENABLE_DEFAULT,
CFG_CE_CLASSIFY_ENABLE_MIN,
CFG_CE_CLASSIFY_ENABLE_MAX),
REG_VARIABLE(CFG_DUAL_MAC_FEATURE_DISABLE, WLAN_PARAM_HexInteger,
struct hdd_config, dual_mac_feature_disable,
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
@@ -2359,20 +2281,6 @@ struct reg_table_entry g_registry_table[] = {
CFG_NUM_DP_RX_THREADS_MIN,
CFG_NUM_DP_RX_THREADS_MAX),
REG_VARIABLE(CFG_CE_SERVICE_MAX_YIELD_TIME_NAME, WLAN_PARAM_Integer,
struct hdd_config, ce_service_max_yield_time,
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
CFG_CE_SERVICE_MAX_YIELD_TIME_DEFAULT,
CFG_CE_SERVICE_MAX_YIELD_TIME_MIN,
CFG_CE_SERVICE_MAX_YIELD_TIME_MAX),
REG_VARIABLE(CFG_CE_SERVICE_MAX_RX_IND_FLUSH_NAME, WLAN_PARAM_Integer,
struct hdd_config, ce_service_max_rx_ind_flush,
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
CFG_CE_SERVICE_MAX_RX_IND_FLUSH_DEFAULT,
CFG_CE_SERVICE_MAX_RX_IND_FLUSH_MIN,
CFG_CE_SERVICE_MAX_RX_IND_FLUSH_MAX),
REG_VARIABLE(CFG_INDOOR_CHANNEL_SUPPORT_NAME,
WLAN_PARAM_Integer,
struct hdd_config, indoor_channel_support,

파일 보기

@@ -126,6 +126,7 @@
#include "wlan_crypto_global_api.h"
#include "wlan_nl_to_crypto_params.h"
#include "wlan_crypto_global_def.h"
#include "cdp_txrx_cfg.h"
#define g_mode_rates_size (12)
#define a_mode_rates_size (8)
@@ -10645,7 +10646,7 @@ static int __wlan_hdd_cfg80211_get_nud_stats(struct wiphy *wiphy,
pkt_type_bitmap = adapter->pkt_type_bitmap;
/* send NUD failure event only when ARP tracking is enabled. */
if (hdd_ctx->config->enable_data_stall_det &&
if (cdp_cfg_get(soc, cfg_dp_enable_data_stall) &&
(pkt_type_bitmap & CONNECTIVITY_CHECK_SET_ARP))
cdp_post_data_stall_event(soc,
DATA_STALL_LOG_INDICATOR_FRAMEWORK,

파일 보기

@@ -40,6 +40,7 @@
#include "wlan_hdd_driver_ops.h"
#include "wlan_ipa_ucfg_api.h"
#include "wlan_hdd_debugfs.h"
#include "cfg_ucfg_api.h"
#ifdef MODULE
#define WLAN_MODULE_NAME module_name(THIS_MODULE)
@@ -262,10 +263,12 @@ int hdd_hif_open(struct device *dev, void *bdev, const struct hif_bus_id *bid,
}
hif_set_ce_service_max_yield_time(hif_ctx,
hdd_ctx->config->ce_service_max_yield_time);
cfg_get(hdd_ctx->psoc,
CFG_DP_CE_SERVICE_MAX_YIELD_TIME));
ucfg_pmo_psoc_set_hif_handle(hdd_ctx->psoc, hif_ctx);
hif_set_ce_service_max_rx_ind_flush(hif_ctx,
hdd_ctx->config->ce_service_max_rx_ind_flush);
cfg_get(hdd_ctx->psoc,
CFG_DP_CE_SERVICE_MAX_RX_IND_FLUSH));
return 0;
err_hif_close:

파일 보기

@@ -3219,7 +3219,8 @@ struct hdd_adapter *hdd_wlan_create_ap_dev(struct hdd_context *hdd_ctx,
dev->mtu = HDD_DEFAULT_MTU;
dev->tx_queue_len = HDD_NETDEV_TX_QUEUE_LEN;
if (hdd_ctx->config->enable_ip_tcp_udp_checksum_offload)
if (cdp_cfg_get(cds_get_context(QDF_MODULE_ID_SOC),
cfg_dp_enable_ip_tcp_udp_checksum_offload))
dev->features |= NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM;
dev->features |= NETIF_F_RXCSUM;

파일 보기

@@ -3540,7 +3540,9 @@ hdd_alloc_station_adapter(struct hdd_context *hdd_ctx, tSirMacAddr mac_addr,
struct hdd_adapter *adapter;
struct hdd_station_ctx *sta_ctx;
QDF_STATUS qdf_status;
void *soc;
soc = cds_get_context(QDF_MODULE_ID_SOC);
/* cfg80211 initialization and registration */
dev = alloc_netdev_mq(sizeof(*adapter), name,
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 17, 0)) || defined(WITH_BACKPORTS)
@@ -3586,7 +3588,8 @@ hdd_alloc_station_adapter(struct hdd_context *hdd_ctx, tSirMacAddr mac_addr,
qdf_mem_copy(adapter->mac_addr.bytes, mac_addr, sizeof(tSirMacAddr));
dev->watchdog_timeo = HDD_TX_TIMEOUT;
if (hdd_ctx->config->enable_ip_tcp_udp_checksum_offload)
if (cdp_cfg_get(soc,
cfg_dp_enable_ip_tcp_udp_checksum_offload))
dev->features |= NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM;
dev->features |= NETIF_F_RXCSUM;
@@ -4013,8 +4016,9 @@ QDF_STATUS hdd_init_station_mode(struct hdd_adapter *adapter)
* during that time, then as part of SSR init, do not enable
* the LRO again. Keep the LRO state same as before SSR.
*/
if (hdd_ctx->config->lro_enable &&
!(qdf_atomic_read(&hdd_ctx->vendor_disable_lro_flag)))
if (cdp_cfg_get(cds_get_context(QDF_MODULE_ID_SOC),
cfg_dp_lro_enable) &&
!(qdf_atomic_read(&hdd_ctx->vendor_disable_lro_flag)))
adapter->dev->features |= NETIF_F_LRO;
/* rcpi info initialization */
@@ -8043,6 +8047,7 @@ static inline int wlan_hdd_set_wow_pulse(struct hdd_context *phddctx, bool enabl
#endif
#ifdef WLAN_FEATURE_FASTPATH
/**
* hdd_enable_fastpath() - Enable fastpath if enabled in config INI
* @hdd_cfg: hdd config
@@ -8050,10 +8055,10 @@ static inline int wlan_hdd_set_wow_pulse(struct hdd_context *phddctx, bool enabl
*
* Return: none
*/
void hdd_enable_fastpath(struct hdd_config *hdd_cfg,
void *context)
void hdd_enable_fastpath(struct hdd_context *hdd_ctx,
void *context)
{
if (hdd_cfg->fastpath_enable)
if (cfg_get(hdd_ctx->psoc, CFG_DP_ENABLE_FASTPATH))
hif_enable_fastpath(context);
}
#endif
@@ -9435,37 +9440,13 @@ static int hdd_update_cds_config(struct hdd_context *hdd_ctx)
/* IPA micro controller data path offload resource config item */
cds_cfg->uc_offload_enabled = ucfg_ipa_uc_is_enabled();
cds_cfg->uc_txbuf_size = hdd_ctx->config->IpaUcTxBufSize;
if (!is_power_of_2(hdd_ctx->config->IpaUcRxIndRingCount)) {
/* IpaUcRxIndRingCount should be power of 2 */
hdd_debug("Round down IpaUcRxIndRingCount %d to nearest power of 2",
hdd_ctx->config->IpaUcRxIndRingCount);
hdd_ctx->config->IpaUcRxIndRingCount =
rounddown_pow_of_two(
hdd_ctx->config->IpaUcRxIndRingCount);
if (!hdd_ctx->config->IpaUcRxIndRingCount) {
hdd_err("Failed to round down IpaUcRxIndRingCount");
goto exit;
}
hdd_debug("IpaUcRxIndRingCount rounded down to %d",
hdd_ctx->config->IpaUcRxIndRingCount);
}
cds_cfg->uc_rxind_ringcount =
hdd_ctx->config->IpaUcRxIndRingCount;
cds_cfg->uc_tx_partition_base =
hdd_ctx->config->IpaUcTxPartitionBase;
cds_cfg->max_scan = hdd_ctx->config->max_scan_count;
cds_cfg->ip_tcp_udp_checksum_offload =
hdd_ctx->config->enable_ip_tcp_udp_checksum_offload;
cds_cfg->enable_rxthread = hdd_ctx->enable_rxthread;
cds_cfg->ce_classify_enabled =
hdd_ctx->config->ce_classify_enabled;
cds_cfg->self_gen_frm_pwr = hdd_ctx->config->self_gen_frm_pwr;
ucfg_mlme_get_sap_max_peers(hdd_ctx->psoc, &value);
cds_cfg->max_station = value;
cds_cfg->sub_20_channel_width = WLAN_SUB_20_CH_WIDTH_NONE;
cds_cfg->flow_steering_enabled = hdd_ctx->config->flow_steering_enable;
cds_cfg->max_msdus_per_rxinorderind =
hdd_ctx->config->max_msdus_per_rxinorderind;
cds_cfg->self_recovery_enabled = self_recovery;
@@ -10418,7 +10399,8 @@ static int hdd_features_init(struct hdd_context *hdd_ctx)
/* Send Enable/Disable data stall detection cmd to FW */
sme_cli_set_command(0, WMI_PDEV_PARAM_DATA_STALL_DETECT_ENABLE,
hdd_ctx->config->enable_data_stall_det, PDEV_CMD);
cdp_cfg_get(cds_get_context(QDF_MODULE_ID_SOC),
cfg_dp_enable_data_stall), PDEV_CMD);
ucfg_mlme_get_go_cts2self_for_sta(hdd_ctx->psoc, &b_cts2self);
if (b_cts2self)
@@ -13567,24 +13549,25 @@ static int hdd_update_dp_config(struct hdd_context *hdd_ctx)
{
struct cdp_config_params params;
QDF_STATUS status;
void *soc;
params.tso_enable = hdd_ctx->config->tso_enable;
params.lro_enable = hdd_ctx->config->lro_enable;
soc = cds_get_context(QDF_MODULE_ID_SOC);
params.tso_enable = cfg_get(hdd_ctx->psoc, CFG_DP_TSO);
params.lro_enable = cfg_get(hdd_ctx->psoc, CFG_DP_LRO);
#ifdef QCA_LL_TX_FLOW_CONTROL_V2
params.tx_flow_stop_queue_threshold =
hdd_ctx->config->TxFlowStopQueueThreshold;
params.tx_flow_start_queue_offset =
hdd_ctx->config->TxFlowStartQueueOffset;
#endif
params.flow_steering_enable = hdd_ctx->config->flow_steering_enable;
params.flow_steering_enable =
cfg_get(hdd_ctx->psoc, CFG_DP_FLOW_STEERING_ENABLED);
params.napi_enable = hdd_ctx->napi_enable;
params.tcp_udp_checksumoffload =
hdd_ctx->config->enable_ip_tcp_udp_checksum_offload;
params.ipa_enable = ucfg_ipa_is_enabled();
cfg_get(hdd_ctx->psoc,
CFG_DP_TCP_UDP_CKSUM_OFFLOAD);
status = cdp_update_config_parameters(
cds_get_context(QDF_MODULE_ID_SOC),
&params);
status = cdp_update_config_parameters(soc, &params);
if (status) {
hdd_err("Failed to attach config parameters");
return status;

파일 보기

@@ -709,7 +709,7 @@ static void __hdd_softap_tx_timeout(struct net_device *dev)
QDF_TRACE(QDF_MODULE_ID_HDD_DATA, QDF_TRACE_LEVEL_ERROR,
"Detected data stall due to continuous TX timeouts");
adapter->hdd_stats.tx_rx_stats.cont_txtimeout_cnt = 0;
if (hdd_ctx->config->enable_data_stall_det)
if (cdp_cfg_get(soc, cfg_dp_enable_data_stall))
cdp_post_data_stall_event(soc,
DATA_STALL_LOG_INDICATOR_HOST_DRIVER,
DATA_STALL_LOG_HOST_SOFTAP_TX_TIMEOUT,

파일 보기

@@ -1275,7 +1275,7 @@ static void __hdd_tx_timeout(struct net_device *dev)
QDF_TRACE(QDF_MODULE_ID_HDD_DATA, QDF_TRACE_LEVEL_ERROR,
"Data stall due to continuous TX timeouts");
adapter->hdd_stats.tx_rx_stats.cont_txtimeout_cnt = 0;
if (hdd_ctx->config->enable_data_stall_det)
if (cdp_cfg_get(soc, cfg_dp_enable_data_stall))
cdp_post_data_stall_event(soc,
DATA_STALL_LOG_INDICATOR_HOST_DRIVER,
DATA_STALL_LOG_HOST_STA_TX_TIMEOUT,
@@ -1530,13 +1530,18 @@ static bool hdd_is_rx_wake_lock_needed(struct sk_buff *skb)
*/
static void hdd_resolve_rx_ol_mode(struct hdd_context *hdd_ctx)
{
if (!(hdd_ctx->config->lro_enable ^
hdd_ctx->config->gro_enable)) {
hdd_ctx->config->lro_enable && hdd_ctx->config->gro_enable ?
void *soc;
soc = cds_get_context(QDF_MODULE_ID_SOC);
if (!(cdp_cfg_get(soc, cfg_dp_lro_enable) ^
cdp_cfg_get(soc, cfg_dp_gro_enable))) {
cdp_cfg_get(soc, cfg_dp_lro_enable) &&
cdp_cfg_get(soc, cfg_dp_gro_enable) ?
hdd_err("Can't enable both LRO and GRO, disabling Rx offload") :
hdd_debug("LRO and GRO both are disabled");
hdd_ctx->ol_enable = 0;
} else if (hdd_ctx->config->lro_enable) {
} else if (cdp_cfg_get(soc, cfg_dp_lro_enable)) {
hdd_debug("Rx offload LRO is enabled");
hdd_ctx->ol_enable = CFG_LRO_ENABLED;
} else {