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

Commit 292ac687 authored by Yeshwanth Sriram Guntuka's avatar Yeshwanth Sriram Guntuka Committed by Madan Koyyalamudi
Browse files

qcacld-3.0: Do GRO en/dis based on qdisc only for standalone STA

In case of STA+SAP, ingress qdisc filters are getting
configured on both STA and SAP interface which is
causing GRO to be disabled.

Check for ingress qdisc to enable/disable GRO only in
case of stanalone STA and not do this in case of
concurrency.

Change-Id: I3542930c7b14d72e267378dd4687ee9721eed4ed
CRs-Fixed: 3062195
parent ad2e6515
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
/*
 * Copyright (c) 2012-2020 The Linux Foundation. All rights reserved.
 * Copyright (c) 2022 Qualcomm Innovation Center, Inc. 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
@@ -1406,14 +1407,15 @@ struct policy_mgr_cdp_cbacks {
/**
 * struct policy_mgr_dp_cbacks - CDP Callbacks to be invoked
 * from policy manager
 * @hdd_disable_rx_ol_in_concurrency: Callback to disable LRO/GRO offloads
 * @hdd_rx_handle_concurrency: Callback to handle concurrency related
 *  operations for rx
 * @hdd_set_rx_mode_rps_cb: Callback to set RPS
 * @hdd_ipa_set_mcc_mode_cb: Callback to set mcc mode for ipa module
 * @hdd_v2_flow_pool_map: Callback to create vdev flow pool
 * @hdd_v2_flow_pool_unmap: Callback to delete vdev flow pool
 */
struct policy_mgr_dp_cbacks {
	void (*hdd_disable_rx_ol_in_concurrency)(bool);
	void (*hdd_rx_handle_concurrency)(bool);
	void (*hdd_set_rx_mode_rps_cb)(bool);
	void (*hdd_ipa_set_mcc_mode_cb)(bool);
	void (*hdd_v2_flow_pool_map)(int);
+5 −4
Original line number Diff line number Diff line
/*
 * Copyright (c) 2012-2020 The Linux Foundation. All rights reserved.
 * Copyright (c) 2022 Qualcomm Innovation Center, Inc. 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
@@ -1726,8 +1727,8 @@ void policy_mgr_incr_active_session(struct wlan_objmgr_psoc *psoc,
	    (policy_mgr_mode_specific_connection_count(psoc,
						       PM_NDI_MODE,
						       NULL) > 0)) {
		if (pm_ctx->dp_cbacks.hdd_disable_rx_ol_in_concurrency)
			pm_ctx->dp_cbacks.hdd_disable_rx_ol_in_concurrency(true);
		if (pm_ctx->dp_cbacks.hdd_rx_handle_concurrency)
			pm_ctx->dp_cbacks.hdd_rx_handle_concurrency(true);
	};

	/* Enable RPS if SAP interface has come up */
@@ -1822,8 +1823,8 @@ QDF_STATUS policy_mgr_decr_active_session(struct wlan_objmgr_psoc *psoc,
	     (policy_mgr_mode_specific_connection_count(psoc,
							PM_NDI_MODE,
							NULL) == 0))) {
		if (pm_ctx->dp_cbacks.hdd_disable_rx_ol_in_concurrency)
			pm_ctx->dp_cbacks.hdd_disable_rx_ol_in_concurrency(false);
		if (pm_ctx->dp_cbacks.hdd_rx_handle_concurrency)
			pm_ctx->dp_cbacks.hdd_rx_handle_concurrency(false);
	};

	/* Disable RPS if SAP interface has come up */
+3 −2
Original line number Diff line number Diff line
/*
 * Copyright (c) 2012-2020 The Linux Foundation. All rights reserved.
 * Copyright (c) 2022 Qualcomm Innovation Center, Inc. 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
@@ -739,8 +740,8 @@ QDF_STATUS policy_mgr_register_dp_cb(struct wlan_objmgr_psoc *psoc,
		return QDF_STATUS_E_FAILURE;
	}

	pm_ctx->dp_cbacks.hdd_disable_rx_ol_in_concurrency =
		dp_cbacks->hdd_disable_rx_ol_in_concurrency;
	pm_ctx->dp_cbacks.hdd_rx_handle_concurrency =
		dp_cbacks->hdd_rx_handle_concurrency;
	pm_ctx->dp_cbacks.hdd_set_rx_mode_rps_cb =
		dp_cbacks->hdd_set_rx_mode_rps_cb;
	pm_ctx->dp_cbacks.hdd_ipa_set_mcc_mode_cb =
+3 −0
Original line number Diff line number Diff line
/*
 * Copyright (c) 2012-2021 The Linux Foundation. All rights reserved.
 * Copyright (c) 2022 Qualcomm Innovation Center, Inc. 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
@@ -1783,6 +1784,7 @@ struct hdd_adapter_ops_history {
 * @gro_force_flush: gro force flushed indication flag
 * @adapter_ops_wq: High priority workqueue for handling adapter operations
 * @is_dual_mac_cfg_updated: indicate whether dual mac cfg has been updated
 * @rx_skip_qdisc_chk_conc: flag to skip ingress qdisc check in concurrency
 */
struct hdd_context {
	struct wlan_objmgr_psoc *psoc;
@@ -2118,6 +2120,7 @@ struct hdd_context {
	qdf_workqueue_t *adapter_ops_wq;
	struct hdd_adapter_ops_history adapter_ops_history;
	bool is_dual_mac_cfg_updated;
	qdf_atomic_t rx_skip_qdisc_chk_conc;
};

/**
+5 −3
Original line number Diff line number Diff line
/*
 * Copyright (c) 2013-2021 The Linux Foundation. All rights reserved.
 * Copyright (c) 2022 Qualcomm Innovation Center, Inc. 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
@@ -202,12 +203,13 @@ QDF_STATUS hdd_rx_pkt_thread_enqueue_cbk(void *adapter_context,
int hdd_rx_ol_init(struct hdd_context *hdd_ctx);

/**
 * hdd_disable_rx_ol_in_concurrency() - Disable Rx offload due to concurrency
 * @disable: true/false to disable/enable the Rx offload
 * hdd_rx_handle_concurrency() - Handle concurrency related operations
 *  for rx
 * @is_concurrency: true if there are concurrenct connections else false
 *
 * Return: none
 */
void hdd_disable_rx_ol_in_concurrency(bool disable);
void hdd_rx_handle_concurrency(bool is_concurrency);

/**
 * hdd_disable_rx_ol_for_low_tput() - Disable Rx offload in low TPUT scenario
Loading