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

Commit 2cba0346 authored by Linux Build Service Account's avatar Linux Build Service Account
Browse files

Merge ec8b5286 on remote branch

Change-Id: Iba5471cd3e997008f124d4f86f5327a3a8fef7a4
parents 5b08b9bc ec8b5286
Loading
Loading
Loading
Loading
+28 −6
Original line number Diff line number Diff line
@@ -1650,6 +1650,27 @@ static void dp_srng_free(struct dp_soc *soc, struct dp_srng *srng)
	srng->hal_srng = NULL;
}

#ifdef DISABLE_MON_RING_MSI_CFG
/*
 * dp_skip_msi_cfg() - Check if msi cfg has to be skipped for ring_type
 * @ring_type: sring type
 *
 * Return: True if msi cfg should be skipped for srng type else false
 */
static inline bool dp_skip_msi_cfg(int ring_type)
{
	if (ring_type == RXDMA_MONITOR_STATUS)
		return true;

	return false;
}
#else
static inline bool dp_skip_msi_cfg(int ring_type)
{
	return false;
}
#endif

/*
 * dp_srng_init() - Initialize SRNG
 * @soc  : Data path soc handle
@@ -1688,11 +1709,10 @@ static QDF_STATUS dp_srng_init(struct dp_soc *soc, struct dp_srng *srng,
		(void *)ring_params.ring_base_paddr,
		ring_params.num_entries);

	if (soc->intr_mode == DP_INTR_MSI) {
	if (soc->intr_mode == DP_INTR_MSI && !dp_skip_msi_cfg(ring_type)) {
		dp_srng_msi_setup(soc, &ring_params, ring_type, ring_num);
		dp_verbose_debug("Using MSI for ring_type: %d, ring_num %d",
				 ring_type, ring_num);

	} else {
		ring_params.msi_data = 0;
		ring_params.msi_addr = 0;
@@ -5974,6 +5994,8 @@ static QDF_STATUS dp_vdev_detach_wifi3(struct cdp_soc_t *cdp_soc,
	else if (hif_get_target_status(soc->hif_handle) == TARGET_STATUS_RESET)
		dp_vdev_flush_peers((struct cdp_vdev *)vdev, true);

	/* indicate that the vdev needs to be deleted */
	vdev->delete.pending = 1;
	dp_rx_vdev_detach(vdev);
	/*
	 * move it after dp_rx_vdev_detach(),
@@ -6004,8 +6026,6 @@ static QDF_STATUS dp_vdev_detach_wifi3(struct cdp_soc_t *cdp_soc,
		qdf_mem_free(vdev->vdev_dp_ext_handle);
		vdev->vdev_dp_ext_handle = NULL;
	}
	/* indicate that the vdev needs to be deleted */
	vdev->delete.pending = 1;
	vdev->delete.callback = callback;
	vdev->delete.context = cb_context;

@@ -7321,9 +7341,11 @@ void dp_get_os_rx_handles_from_vdev_wifi3(struct cdp_soc_t *soc_hdl,
	struct dp_vdev *vdev = dp_vdev_get_ref_by_id(soc, vdev_id,
						     DP_MOD_ID_CDP);

	if (!vdev)
	if (qdf_unlikely(!vdev)) {
		*stack_fn_p = NULL;
		*osif_vdev_p = NULL;
		return;

	}
	*stack_fn_p = vdev->osif_rx_stack;
	*osif_vdev_p = vdev->osif_vdev;
	dp_vdev_unref_delete(soc, vdev, DP_MOD_ID_CDP);
+3 −3
Original line number Diff line number Diff line
@@ -2261,7 +2261,6 @@ void dp_rx_deliver_to_pkt_capture_no_peer(struct dp_soc *soc, qdf_nbuf_t nbuf,
	uint16_t peer_id, vdev_id;
	uint32_t pkt_len = 0;
	uint8_t *rx_tlv_hdr;
	uint32_t l2_hdr_offset = 0;
	struct hal_rx_msdu_metadata msdu_metadata;

	peer_id = QDF_NBUF_CB_RX_PEER_ID(nbuf);
@@ -2271,14 +2270,15 @@ void dp_rx_deliver_to_pkt_capture_no_peer(struct dp_soc *soc, qdf_nbuf_t nbuf,
	msdu_len = QDF_NBUF_CB_RX_PKT_LEN(nbuf);
	pkt_len = msdu_len + msdu_metadata.l3_hdr_pad +
		  RX_PKT_TLVS_LEN;
	l2_hdr_offset =
		hal_rx_msdu_end_l3_hdr_padding_get(soc->hal_soc, rx_tlv_hdr);

	qdf_nbuf_set_pktlen(nbuf, pkt_len);
	dp_rx_skip_tlvs(nbuf, msdu_metadata.l3_hdr_pad);

	dp_wdi_event_handler(WDI_EVENT_PKT_CAPTURE_RX_DATA, soc, nbuf,
			     HTT_INVALID_VDEV, is_offload, 0);

	qdf_nbuf_push_head(nbuf, msdu_metadata.l3_hdr_pad +
			   RX_PKT_TLVS_LEN);
}

#endif
+1 −0
Original line number Diff line number Diff line
@@ -28,6 +28,7 @@
#include <qdf_lro.h>
#include <queue.h>
#include <htt_common.h>
#include <htt.h>
#include <htt_stats.h>
#include <cdp_txrx_cmn.h>
#ifdef DP_MOB_DEFS
+1 −2
Original line number Diff line number Diff line
@@ -1788,8 +1788,7 @@ void *hal_srng_src_get_next_consumed(void *hal_soc,
	uint32_t next_entry = (srng->last_desc_cleared + srng->entry_size) %
			      srng->ring_size;

	if (next_entry != (srng->u.src_ring.cached_tp + srng->entry_size) %
			  srng->ring_size) {
	if (next_entry != srng->u.src_ring.cached_tp) {
		desc = &srng->ring_base_vaddr[next_entry];
		srng->last_desc_cleared = next_entry;
	}
+23 −0
Original line number Diff line number Diff line
@@ -1721,6 +1721,27 @@ static inline void hal_srng_hw_init(struct hal_soc *hal,
#define CHECK_SHADOW_REGISTERS false
#endif

#if defined(CLEAR_SW2TCL_CONSUMED_DESC)
/**
 * hal_srng_last_desc_cleared_init - Initialize SRNG last_desc_cleared ptr
 *
 * @srng: Source ring pointer
 *
 * Return: None
 */
static inline
void hal_srng_last_desc_cleared_init(struct hal_srng *srng)
{
	srng->last_desc_cleared = srng->ring_size - srng->entry_size;
}

#else
static inline
void hal_srng_last_desc_cleared_init(struct hal_srng *srng)
{
}
#endif /* CLEAR_SW2TCL_CONSUMED_DESC */

/**
 * hal_srng_setup - Initialize HW SRNG ring.
 * @hal_soc: Opaque HAL SOC handle
@@ -1799,6 +1820,8 @@ void *hal_srng_setup(void *hal_soc, int ring_type, int ring_num,
	srng->flags |= HAL_SRNG_RING_PTR_SWAP;
#endif

	hal_srng_last_desc_cleared_init(srng);

	if (srng->ring_dir == HAL_SRNG_SRC_RING) {
		srng->u.src_ring.hp = 0;
		srng->u.src_ring.reap_hp = srng->ring_size -
Loading