Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1953e511 authored by Manjunathappa Prakash's avatar Manjunathappa Prakash Committed by snandini
Browse files

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
parent 4e7dc07b
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -1096,6 +1096,8 @@ enum cdp_pdev_param_type {
 *
 * @cdp_psoc_param_en_rate_stats: set rate stats enable/disable
 * @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 {
	/* peer params */
@@ -1156,6 +1158,8 @@ typedef union cdp_config_param_t {
	/* psoc params */
	bool cdp_psoc_param_en_rate_stats;
	int cdp_psoc_param_en_nss_cfg;

	bool cdp_enable_tx_checksum;
} cdp_config_param_type;

/**
@@ -1249,6 +1253,7 @@ enum cdp_vdev_param_type {
#endif
	CDP_SAFEMODE,
	CDP_DROP_UNENC,
	CDP_ENABLE_CSUM,
};

/*
@@ -2142,6 +2147,8 @@ struct cdp_rx_indication_msdu {
 * @p2p_tcp_udp_checksumoffload: Enable/Disable TCP/UDP Checksum Offload for P2P
 * @nan_tcp_udp_checksumoffload: Enable/Disable TCP/UDP Checksum Offload for NAN
 * @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
 * @ipa_enable: Flag indicating if IPA is enabled or not
 * @tx_flow_stop_queue_threshold: Value to Pause tx queues
@@ -2159,6 +2166,7 @@ struct cdp_config_params {
	unsigned int p2p_tcp_udp_checksumoffload:1;
	unsigned int nan_tcp_udp_checksumoffload:1;
	unsigned int tcp_udp_checksumoffload:1;
	unsigned int legacy_mode_checksumoffload_disable:1;
	unsigned int napi_enable:1;
	unsigned int ipa_enable:1;
	/* Set when QCA_LL_TX_FLOW_CONTROL_V2 is enabled */
@@ -2237,6 +2245,8 @@ enum cdp_dp_cfg {
	cfg_dp_enable_p2p_ip_tcp_udp_checksum_offload,
	cfg_dp_enable_nan_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_lro_enable,
	cfg_dp_gro_enable,
+4 −1
Original line number Diff line number Diff line
@@ -239,8 +239,11 @@ cdp_txrx_set_vdev_param(ol_txrx_soc_handle soc,
	}

	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 soc->ops->ctrl_ops->txrx_set_vdev_param(soc, vdev_id,
						       type, val);
+3 −1
Original line number Diff line number Diff line
@@ -288,6 +288,8 @@ struct txrx_pdev_cfg_param_t {
	bool nan_ip_tcp_udp_checksum_offload;
	/* IP, TCP and UDP checksum offload for P2P Mode*/
	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 */
	bool enable_rxthread;
	/* CE classification enabled through INI */
+9 −0
Original line number Diff line number Diff line
@@ -8392,6 +8392,11 @@ dp_set_vdev_param(struct cdp_soc_t *cdp_soc, uint8_t vdev_id,
				      val.cdp_vdev_param_mesh_mode);
		break;
#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:
		break;
	}
@@ -9863,6 +9868,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:
		value = dpsoc->wlan_cfg_ctx->tcp_udp_checksumoffload;
		break;
	case cfg_dp_disable_legacy_mode_csum_offload:
		value = dpsoc->wlan_cfg_ctx->
					legacy_mode_checksumoffload_disable;
		break;
	case cfg_dp_tso_enable:
		value = dpsoc->wlan_cfg_ctx->tso_enabled;
		break;
+23 −2
Original line number Diff line number Diff line
@@ -854,6 +854,27 @@
		WLAN_CFG_PKTLOG_BUFFER_SIZE, \
		CFG_VALUE_OR_DEFAULT, "Packet Log buffer size")

/*
 * <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 \
		CFG(CFG_DP_HTT_PACKET_TYPE) \
		CFG(CFG_DP_INT_BATCH_THRESHOLD_OTHER) \
@@ -928,6 +949,6 @@
		CFG(CFG_DP_RX_MON_PROTOCOL_FLOW_TAG_ENABLE) \
		CFG(CFG_DP_RXDMA_MONITOR_RX_DROP_THRESHOLD) \
		CFG(CFG_DP_PKTLOG_BUFFER_SIZE) \
		CFG(CFG_DP_RX_FISA_ENABLE)

		CFG(CFG_DP_RX_FISA_ENABLE) \
		CFG(CFG_DP_LEGACY_MODE_CSUM_DISABLE)
#endif /* _CFG_DP_H_ */
Loading