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

Commit 1962115d authored by Linux Build Service Account's avatar Linux Build Service Account
Browse files

Merge 9bb66a7d on remote branch

Change-Id: I0eadb951fa6f3b9cd3475aaff97ebf8ac8c4ffb0
parents 5e57ef09 9bb66a7d
Loading
Loading
Loading
Loading
+28 −0
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.
 *
 * Permission to use, copy, modify, and/or distribute this software for
 * any purpose with or without fee is hereby granted, provided that the
@@ -694,6 +695,33 @@ cdp_peer_delete(ol_txrx_soc_handle soc, uint8_t vdev_id,
	soc->ops->cmn_drv_ops->txrx_peer_delete(soc, vdev_id, peer_mac, bitmap);
}

#ifdef DP_RX_UDP_OVER_PEER_ROAM
static inline void
cdp_update_roaming_peer_in_vdev(ol_txrx_soc_handle soc, uint8_t vdev_id,
				uint8_t *peer_mac, uint32_t auth_status)
{
	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->txrx_update_roaming_peer)
		return;

	soc->ops->cmn_drv_ops->txrx_update_roaming_peer(soc, vdev_id,
							peer_mac, auth_status);
}
#else
static inline void
cdp_update_roaming_peer_in_vdev(ol_txrx_soc_handle soc, uint8_t vdev_id,
				uint8_t *peer_mac, uint32_t auth_status)
{
}
#endif

/**
 * cdp_peer_detach_sync() - peer detach sync callback
 * @soc: datapath soc handle
+7 −0
Original line number Diff line number Diff line
@@ -558,6 +558,13 @@ struct cdp_cmn_ops {
	QDF_STATUS (*set_vdev_pcp_tid_map)(struct cdp_soc_t *soc,
					   uint8_t vdev_id,
					   uint8_t pcp, uint8_t tid);
#ifdef DP_RX_UDP_OVER_PEER_ROAM
	QDF_STATUS (*txrx_update_roaming_peer)(struct cdp_soc_t *soc,
					       uint8_t vdev_id,
					       uint8_t *peer_mac,
					       uint32_t auth_status);
#endif

#ifdef QCA_MULTIPASS_SUPPORT
	QDF_STATUS (*set_vlan_groupkey)(struct cdp_soc_t *soc, uint8_t vdev_id,
					uint16_t vlan_id, uint16_t group_key);
+6 −0
Original line number Diff line number Diff line
@@ -4709,6 +4709,12 @@ static void dp_htt_t2h_msg_handler(void *context, HTC_PACKET *pkt)
					peer->mac_addr.raw, peer->vdev->vdev_id,
					0, tid, 0, win_sz + 1, 0xffff);

				dp_addba_resp_tx_completion_wifi3(
					(struct cdp_soc_t *)soc->dp_soc,
					peer->mac_addr.raw, peer->vdev->vdev_id,
					tid,
					status);

				/*
				 * If PEER_LOCK_REF_PROTECT enbled dec ref
				 * which is inc by dp_peer_get_ref_by_id
+23 −0
Original line number Diff line number Diff line
@@ -7267,6 +7267,26 @@ static QDF_STATUS dp_peer_delete_wifi3(struct cdp_soc_t *soc_hdl,
	return QDF_STATUS_SUCCESS;
}

#ifdef DP_RX_UDP_OVER_PEER_ROAM
static QDF_STATUS dp_update_roaming_peer_wifi3(struct cdp_soc_t *soc_hdl,
					       uint8_t vdev_id,
					       uint8_t *peer_mac,
					       uint32_t auth_status)
{
	struct dp_soc *soc = cdp_soc_t_to_dp_soc(soc_hdl);
	struct dp_vdev *vdev = dp_vdev_get_ref_by_id(soc, vdev_id,
						     DP_MOD_ID_CDP);
	if (!vdev)
		return QDF_STATUS_E_FAILURE;

	vdev->roaming_peer_status = auth_status;
	qdf_mem_copy(vdev->roaming_peer_mac.raw, peer_mac,
		     QDF_MAC_ADDR_SIZE);
	dp_vdev_unref_delete(soc, vdev, DP_MOD_ID_CDP);

	return QDF_STATUS_SUCCESS;
}
#endif
/*
 * dp_get_vdev_mac_addr_wifi3() – Detach txrx peer
 * @soc_hdl: Datapath soc handle
@@ -11332,6 +11352,9 @@ static struct cdp_cmn_ops dp_ops_cmn = {
	.txrx_peer_ast_delete_by_pdev =
		dp_peer_ast_entry_del_by_pdev,
	.txrx_peer_delete = dp_peer_delete_wifi3,
#ifdef DP_RX_UDP_OVER_PEER_ROAM
	.txrx_update_roaming_peer = dp_update_roaming_peer_wifi3,
#endif
	.txrx_vdev_register = dp_vdev_register_wifi3,
	.txrx_soc_detach = dp_soc_detach_wifi3,
	.txrx_soc_deinit = dp_soc_deinit_wifi3,
+22 −0
Original line number Diff line number Diff line
@@ -2095,6 +2095,26 @@ static inline struct dp_peer *dp_peer_find_add_id(struct dp_soc *soc,
	return NULL;
}

#ifdef DP_RX_UDP_OVER_PEER_ROAM
void dp_rx_reset_roaming_peer(struct dp_soc *soc, uint8_t vdev_id,
			      uint8_t *peer_mac_addr)
{
	struct dp_vdev *vdev = NULL;

	vdev = dp_vdev_get_ref_by_id(soc, vdev_id, DP_MOD_ID_HTT);
	if (vdev) {
		if (qdf_mem_cmp(vdev->roaming_peer_mac.raw, peer_mac_addr,
				QDF_MAC_ADDR_SIZE) == 0) {
			vdev->roaming_peer_status =
						WLAN_ROAM_PEER_AUTH_STATUS_NONE;
			qdf_mem_zero(vdev->roaming_peer_mac.raw,
				     QDF_MAC_ADDR_SIZE);
		}
		dp_vdev_unref_delete(soc, vdev, DP_MOD_ID_HTT);
	}
}
#endif

/**
 * dp_rx_peer_map_handler() - handle peer map event from firmware
 * @soc_handle - genereic soc handle
@@ -2188,6 +2208,8 @@ dp_rx_peer_map_handler(struct dp_soc *soc, uint16_t peer_id,
				      vdev_id, ast_hash, is_wds);
	}

	dp_rx_reset_roaming_peer(soc, vdev_id, peer_mac_addr);

	return err;
}

Loading