qcacmn: Add DP INI to tune netdev features at runtime
Add INI to modify the HW checksum capability advertisement. Add hook to update enable/disable of HW checksum for vdev. Change-Id: Idd0bad1d39c8411c7b4ef19483aa2c75a756791b CRs-Fixed: 2732099
This commit is contained in:

committed by
snandini

parent
b9affa1488
commit
93aff9ee1f
@@ -1125,6 +1125,8 @@ enum cdp_pdev_param_type {
|
|||||||
*
|
*
|
||||||
* @cdp_psoc_param_en_rate_stats: set rate stats enable/disable
|
* @cdp_psoc_param_en_rate_stats: set rate stats enable/disable
|
||||||
* @cdp_psoc_param_en_nss_cfg: set nss cfg
|
* @cdp_psoc_param_en_nss_cfg: set nss cfg
|
||||||
|
*
|
||||||
|
* @cdp_enable_tx_checksum: Flag to specify if HW Tx checksum enabled
|
||||||
*/
|
*/
|
||||||
typedef union cdp_config_param_t {
|
typedef union cdp_config_param_t {
|
||||||
/* peer params */
|
/* peer params */
|
||||||
@@ -1190,6 +1192,8 @@ typedef union cdp_config_param_t {
|
|||||||
int cdp_psoc_param_en_nss_cfg;
|
int cdp_psoc_param_en_nss_cfg;
|
||||||
int cdp_psoc_param_preferred_hw_mode;
|
int cdp_psoc_param_preferred_hw_mode;
|
||||||
bool cdp_psoc_param_pext_stats;
|
bool cdp_psoc_param_pext_stats;
|
||||||
|
|
||||||
|
bool cdp_enable_tx_checksum;
|
||||||
} cdp_config_param_type;
|
} cdp_config_param_type;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -1284,6 +1288,7 @@ enum cdp_vdev_param_type {
|
|||||||
#endif
|
#endif
|
||||||
CDP_SAFEMODE,
|
CDP_SAFEMODE,
|
||||||
CDP_DROP_UNENC,
|
CDP_DROP_UNENC,
|
||||||
|
CDP_ENABLE_CSUM,
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -2219,6 +2224,8 @@ struct cdp_rx_indication_msdu {
|
|||||||
* @p2p_tcp_udp_checksumoffload: Enable/Disable TCP/UDP Checksum Offload for P2P
|
* @p2p_tcp_udp_checksumoffload: Enable/Disable TCP/UDP Checksum Offload for P2P
|
||||||
* @nan_tcp_udp_checksumoffload: Enable/Disable TCP/UDP Checksum Offload for NAN
|
* @nan_tcp_udp_checksumoffload: Enable/Disable TCP/UDP Checksum Offload for NAN
|
||||||
* @tcp_udp_checksumoffload: Enable/Disable TCP/UDP Checksum Offload
|
* @tcp_udp_checksumoffload: Enable/Disable TCP/UDP Checksum Offload
|
||||||
|
* @legacy_mode_checksumoffload_disable: Disable TCP/UDP Checksum Offload for
|
||||||
|
* legacy modes.
|
||||||
* @napi_enable: Enable/Disable Napi
|
* @napi_enable: Enable/Disable Napi
|
||||||
* @ipa_enable: Flag indicating if IPA is enabled or not
|
* @ipa_enable: Flag indicating if IPA is enabled or not
|
||||||
* @tx_flow_stop_queue_threshold: Value to Pause tx queues
|
* @tx_flow_stop_queue_threshold: Value to Pause tx queues
|
||||||
@@ -2236,6 +2243,7 @@ struct cdp_config_params {
|
|||||||
unsigned int p2p_tcp_udp_checksumoffload:1;
|
unsigned int p2p_tcp_udp_checksumoffload:1;
|
||||||
unsigned int nan_tcp_udp_checksumoffload:1;
|
unsigned int nan_tcp_udp_checksumoffload:1;
|
||||||
unsigned int tcp_udp_checksumoffload:1;
|
unsigned int tcp_udp_checksumoffload:1;
|
||||||
|
unsigned int legacy_mode_checksumoffload_disable:1;
|
||||||
unsigned int napi_enable:1;
|
unsigned int napi_enable:1;
|
||||||
unsigned int ipa_enable:1;
|
unsigned int ipa_enable:1;
|
||||||
/* Set when QCA_LL_TX_FLOW_CONTROL_V2 is enabled */
|
/* Set when QCA_LL_TX_FLOW_CONTROL_V2 is enabled */
|
||||||
@@ -2314,6 +2322,8 @@ enum cdp_dp_cfg {
|
|||||||
cfg_dp_enable_p2p_ip_tcp_udp_checksum_offload,
|
cfg_dp_enable_p2p_ip_tcp_udp_checksum_offload,
|
||||||
cfg_dp_enable_nan_ip_tcp_udp_checksum_offload,
|
cfg_dp_enable_nan_ip_tcp_udp_checksum_offload,
|
||||||
cfg_dp_enable_ip_tcp_udp_checksum_offload,
|
cfg_dp_enable_ip_tcp_udp_checksum_offload,
|
||||||
|
/* Disable checksum offload for legacy modes */
|
||||||
|
cfg_dp_disable_legacy_mode_csum_offload,
|
||||||
cfg_dp_tso_enable,
|
cfg_dp_tso_enable,
|
||||||
cfg_dp_lro_enable,
|
cfg_dp_lro_enable,
|
||||||
cfg_dp_gro_enable,
|
cfg_dp_gro_enable,
|
||||||
|
@@ -272,8 +272,11 @@ cdp_txrx_set_vdev_param(ol_txrx_soc_handle soc,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!soc->ops->ctrl_ops ||
|
if (!soc->ops->ctrl_ops ||
|
||||||
!soc->ops->ctrl_ops->txrx_set_vdev_param)
|
!soc->ops->ctrl_ops->txrx_set_vdev_param) {
|
||||||
|
QDF_TRACE(QDF_MODULE_ID_CDP, QDF_TRACE_LEVEL_DEBUG,
|
||||||
|
"NULL vdev params callback");
|
||||||
return QDF_STATUS_E_FAILURE;
|
return QDF_STATUS_E_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
return soc->ops->ctrl_ops->txrx_set_vdev_param(soc, vdev_id,
|
return soc->ops->ctrl_ops->txrx_set_vdev_param(soc, vdev_id,
|
||||||
type, val);
|
type, val);
|
||||||
|
@@ -289,6 +289,8 @@ struct txrx_pdev_cfg_param_t {
|
|||||||
bool nan_ip_tcp_udp_checksum_offload;
|
bool nan_ip_tcp_udp_checksum_offload;
|
||||||
/* IP, TCP and UDP checksum offload for P2P Mode*/
|
/* IP, TCP and UDP checksum offload for P2P Mode*/
|
||||||
bool p2p_ip_tcp_udp_checksum_offload;
|
bool p2p_ip_tcp_udp_checksum_offload;
|
||||||
|
/* Checksum offload override flag for Legcay modes */
|
||||||
|
bool legacy_mode_csum_disable;
|
||||||
/* Rx processing in thread from TXRX */
|
/* Rx processing in thread from TXRX */
|
||||||
bool enable_rxthread;
|
bool enable_rxthread;
|
||||||
/* CE classification enabled through INI */
|
/* CE classification enabled through INI */
|
||||||
|
@@ -8578,6 +8578,11 @@ dp_set_vdev_param(struct cdp_soc_t *cdp_soc, uint8_t vdev_id,
|
|||||||
val.cdp_vdev_param_mesh_mode);
|
val.cdp_vdev_param_mesh_mode);
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
|
case CDP_ENABLE_CSUM:
|
||||||
|
dp_info("vdev_id %d enable Checksum %d", vdev_id,
|
||||||
|
val.cdp_enable_tx_checksum);
|
||||||
|
vdev->csum_enabled = val.cdp_enable_tx_checksum;
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -10142,6 +10147,10 @@ static uint32_t dp_get_cfg(struct cdp_soc_t *soc, enum cdp_dp_cfg cfg)
|
|||||||
case cfg_dp_enable_ip_tcp_udp_checksum_offload:
|
case cfg_dp_enable_ip_tcp_udp_checksum_offload:
|
||||||
value = dpsoc->wlan_cfg_ctx->tcp_udp_checksumoffload;
|
value = dpsoc->wlan_cfg_ctx->tcp_udp_checksumoffload;
|
||||||
break;
|
break;
|
||||||
|
case cfg_dp_disable_legacy_mode_csum_offload:
|
||||||
|
value = dpsoc->wlan_cfg_ctx->
|
||||||
|
legacy_mode_checksumoffload_disable;
|
||||||
|
break;
|
||||||
case cfg_dp_tso_enable:
|
case cfg_dp_tso_enable:
|
||||||
value = dpsoc->wlan_cfg_ctx->tso_enabled;
|
value = dpsoc->wlan_cfg_ctx->tso_enabled;
|
||||||
break;
|
break;
|
||||||
|
@@ -940,6 +940,26 @@
|
|||||||
#define CFG_DP_PEER_EXT_STATS \
|
#define CFG_DP_PEER_EXT_STATS \
|
||||||
CFG_INI_BOOL("peer_ext_stats", \
|
CFG_INI_BOOL("peer_ext_stats", \
|
||||||
false, "Peer extended stats")
|
false, "Peer extended stats")
|
||||||
|
/*
|
||||||
|
* <ini>
|
||||||
|
* legacy_mode_csum_disable - Disable csum offload for legacy 802.11abg modes
|
||||||
|
* @Min: 0
|
||||||
|
* @Max: 1
|
||||||
|
* @Default: 0
|
||||||
|
*
|
||||||
|
* This ini is used to disable HW checksum offload capability for legacy
|
||||||
|
* connections
|
||||||
|
*
|
||||||
|
* Related: gEnableIpTcpUdpChecksumOffload should be enabled
|
||||||
|
*
|
||||||
|
* Usage: Internal
|
||||||
|
*
|
||||||
|
* </ini>
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define CFG_DP_LEGACY_MODE_CSUM_DISABLE \
|
||||||
|
CFG_INI_BOOL("legacy_mode_csum_disable", false, \
|
||||||
|
"Enable/Disable legacy mode checksum")
|
||||||
|
|
||||||
#define CFG_DP_RX_BUFF_POOL_ENABLE \
|
#define CFG_DP_RX_BUFF_POOL_ENABLE \
|
||||||
CFG_INI_BOOL("dp_rx_buff_prealloc_pool", false, \
|
CFG_INI_BOOL("dp_rx_buff_prealloc_pool", false, \
|
||||||
@@ -1026,6 +1046,6 @@
|
|||||||
CFG(CFG_DP_PEER_EXT_STATS) \
|
CFG(CFG_DP_PEER_EXT_STATS) \
|
||||||
CFG(CFG_DP_RX_BUFF_POOL_ENABLE) \
|
CFG(CFG_DP_RX_BUFF_POOL_ENABLE) \
|
||||||
CFG(CFG_DP_RX_PENDING_HL_THRESHOLD) \
|
CFG(CFG_DP_RX_PENDING_HL_THRESHOLD) \
|
||||||
CFG(CFG_DP_RX_PENDING_LO_THRESHOLD)
|
CFG(CFG_DP_RX_PENDING_LO_THRESHOLD) \
|
||||||
|
CFG(CFG_DP_LEGACY_MODE_CSUM_DISABLE)
|
||||||
#endif /* _CFG_DP_H_ */
|
#endif /* _CFG_DP_H_ */
|
||||||
|
@@ -547,6 +547,8 @@ wlan_cfg_soc_attach(struct cdp_ctrl_objmgr_psoc *psoc)
|
|||||||
cfg_get(psoc, CFG_DP_NAN_TCP_UDP_CKSUM_OFFLOAD);
|
cfg_get(psoc, CFG_DP_NAN_TCP_UDP_CKSUM_OFFLOAD);
|
||||||
wlan_cfg_ctx->tcp_udp_checksumoffload =
|
wlan_cfg_ctx->tcp_udp_checksumoffload =
|
||||||
cfg_get(psoc, CFG_DP_TCP_UDP_CKSUM_OFFLOAD);
|
cfg_get(psoc, CFG_DP_TCP_UDP_CKSUM_OFFLOAD);
|
||||||
|
wlan_cfg_ctx->legacy_mode_checksumoffload_disable =
|
||||||
|
cfg_get(psoc, CFG_DP_LEGACY_MODE_CSUM_DISABLE);
|
||||||
wlan_cfg_ctx->per_pkt_trace = cfg_get(psoc, CFG_DP_PER_PKT_LOGGING);
|
wlan_cfg_ctx->per_pkt_trace = cfg_get(psoc, CFG_DP_PER_PKT_LOGGING);
|
||||||
wlan_cfg_ctx->defrag_timeout_check =
|
wlan_cfg_ctx->defrag_timeout_check =
|
||||||
cfg_get(psoc, CFG_DP_DEFRAG_TIMEOUT_CHECK);
|
cfg_get(psoc, CFG_DP_DEFRAG_TIMEOUT_CHECK);
|
||||||
|
@@ -244,6 +244,7 @@ struct wlan_cfg_dp_soc_ctxt {
|
|||||||
bool p2p_tcp_udp_checksumoffload;
|
bool p2p_tcp_udp_checksumoffload;
|
||||||
bool nan_tcp_udp_checksumoffload;
|
bool nan_tcp_udp_checksumoffload;
|
||||||
bool tcp_udp_checksumoffload;
|
bool tcp_udp_checksumoffload;
|
||||||
|
bool legacy_mode_checksumoffload_disable;
|
||||||
bool defrag_timeout_check;
|
bool defrag_timeout_check;
|
||||||
int nss_cfg;
|
int nss_cfg;
|
||||||
uint32_t tx_flow_stop_queue_threshold;
|
uint32_t tx_flow_stop_queue_threshold;
|
||||||
|
Reference in New Issue
Block a user