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

Commit 82ba8c98 authored by Linux Build Service Account's avatar Linux Build Service Account
Browse files

Merge 38c775e7 on remote branch

Change-Id: I9c910d3d7187cc8baaefef2f545118636e197e93
parents 214853c1 38c775e7
Loading
Loading
Loading
Loading
+25 −1
Original line number Diff line number Diff line
/*
 * Copyright (c) 2011-2020 The Linux Foundation. All rights reserved.
 * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
 * Copyright (c) 2022-2023 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
@@ -2047,6 +2047,30 @@ cdp_txrx_set_pdev_status_down(ol_txrx_soc_handle soc,
						    is_pdev_down);
}

/**
 * cdp_set_tx_pause() - Pause or resume tx path
 * @soc_hdl: Datapath soc handle
 * @flag: set or clear is_tx_pause
 *
 * Return: None.
 */
static inline
void cdp_set_tx_pause(ol_txrx_soc_handle soc, bool flag)
{
	if (!soc || !soc->ops) {
		QDF_TRACE(QDF_MODULE_ID_CDP, QDF_TRACE_LEVEL_DEBUG,
			  "%s: Invalid Instance:", __func__);
		QDF_BUG(0);
		return;
	}

	if (!soc->ops->cmn_drv_ops ||
				!soc->ops->cmn_drv_ops->set_tx_pause)
		return;

	soc->ops->cmn_drv_ops->set_tx_pause(soc, flag);
}

/**
 * cdp_tx_send() - enqueue frame for transmission
 * @soc: soc opaque handle
+4 −1
Original line number Diff line number Diff line
/*
 * Copyright (c) 2017-2020 The Linux Foundation. All rights reserved.
 * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
 * Copyright (c) 2022-2023 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
@@ -519,6 +519,9 @@ struct cdp_cmn_ops {
				    uint32_t value);

	ol_txrx_tx_fp tx_send;

	void (*set_tx_pause)(ol_txrx_soc_handle soc, bool flag);

	/**
	 * txrx_get_os_rx_handles_from_vdev() - Return function, osif vdev
	 *					to deliver pkt to stack.
+17 −1
Original line number Diff line number Diff line
/*
 * Copyright (c) 2016-2021 The Linux Foundation. All rights reserved.
 * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
 * Copyright (c) 2022-2023 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
@@ -11339,6 +11339,21 @@ dp_set_pkt_capture_mode(struct cdp_soc_t *soc_handle, bool val)
}
#endif

/**
 * dp_set_tx_pause() - Pause or resume tx path
 * @soc_hdl: Datapath soc handle
 * @flag: set or clear is_tx_pause
 *
 * Return: None.
 */
static inline
void dp_set_tx_pause(struct cdp_soc_t *soc_hdl, bool flag)
{
	struct dp_soc *soc = cdp_soc_t_to_dp_soc(soc_hdl);

	soc->is_tx_pause = flag;
}

static struct cdp_cmn_ops dp_ops_cmn = {
	.txrx_soc_attach_target = dp_soc_attach_target_wifi3,
	.txrx_vdev_attach = dp_vdev_attach_wifi3,
@@ -11411,6 +11426,7 @@ static struct cdp_cmn_ops dp_ops_cmn = {
	.txrx_set_ba_aging_timeout = dp_set_ba_aging_timeout,
	.txrx_get_ba_aging_timeout = dp_get_ba_aging_timeout,
	.tx_send = dp_tx_send,
	.set_tx_pause = dp_set_tx_pause,
	.txrx_peer_reset_ast = dp_wds_reset_ast_wifi3,
	.txrx_peer_reset_ast_table = dp_wds_reset_ast_table_wifi3,
	.txrx_peer_flush_ast_table = dp_wds_flush_ast_table_wifi3,
+10 −8
Original line number Diff line number Diff line
/*
 * Copyright (c) 2016-2020 The Linux Foundation. All rights reserved.
 * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
 * Copyright (c) 2022-2023 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
@@ -643,7 +643,8 @@ dp_rx_intrabss_fwd(struct dp_soc *soc,
				}
			}

			if (!dp_tx_send((struct cdp_soc_t *)soc,
			if (!soc->is_tx_pause &&
			    !dp_tx_send((struct cdp_soc_t *)soc,
					ta_peer->vdev->vdev_id, nbuf)) {
				DP_STATS_INC_PKT(ta_peer, rx.intra_bss.pkts, 1,
						 len);
@@ -684,17 +685,18 @@ dp_rx_intrabss_fwd(struct dp_soc *soc,

		/* Set cb->ftype to intrabss FWD */
		qdf_nbuf_set_tx_ftype(nbuf_copy, CB_FTYPE_INTRABSS_FWD);
		if (dp_tx_send((struct cdp_soc_t *)soc,
			       ta_peer->vdev->vdev_id, nbuf_copy)) {

		if (!soc->is_tx_pause && !dp_tx_send((struct cdp_soc_t *)soc,
						     ta_peer->vdev->vdev_id,
						     nbuf_copy)) {
			DP_STATS_INC_PKT(ta_peer, rx.intra_bss.pkts, 1, len);
			tid_stats->intrabss_cnt++;
		} else {
			DP_STATS_INC_PKT(ta_peer, rx.intra_bss.fail, 1, len);
			tid_stats->fail_cnt[INTRABSS_DROP]++;
			qdf_nbuf_free(nbuf_copy);
		} else {
			DP_STATS_INC_PKT(ta_peer, rx.intra_bss.pkts, 1, len);
			tid_stats->intrabss_cnt++;
		}
	}

end:
	/* return false as we have to still send the original pkt
	 * up the stack
+2 −1
Original line number Diff line number Diff line
/*
 * Copyright (c) 2016-2021 The Linux Foundation. All rights reserved.
 * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
 * Copyright (c) 2022-2023 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
@@ -1926,6 +1926,7 @@ struct dp_soc {
	qdf_spinlock_t reo_desc_deferred_freelist_lock;
	bool reo_desc_deferred_freelist_init;
#endif
	bool is_tx_pause;
};

#ifdef IPA_OFFLOAD
Loading