qcacmn: remove ctrl_peer handle from dp peer
Remove ctrl_peer handle from dp peer and instead
use peer's mac address
Change-Id: I9e24fa94248749f9b4859bce4a1d79d70f32507e
diff --git a/dp/inc/cdp_txrx_cmn.h b/dp/inc/cdp_txrx_cmn.h
index 6174c11..88dd409 100644
--- a/dp/inc/cdp_txrx_cmn.h
+++ b/dp/inc/cdp_txrx_cmn.h
@@ -362,7 +362,7 @@
static inline void *cdp_peer_create
(ol_txrx_soc_handle soc, struct cdp_vdev *vdev,
- uint8_t *peer_mac_addr, struct cdp_ctrl_objmgr_peer *ctrl_peer)
+ uint8_t *peer_mac_addr)
{
if (!soc || !soc->ops) {
QDF_TRACE(QDF_MODULE_ID_CDP, QDF_TRACE_LEVEL_DEBUG,
@@ -376,7 +376,7 @@
return NULL;
return soc->ops->cmn_drv_ops->txrx_peer_create(vdev,
- peer_mac_addr, ctrl_peer);
+ peer_mac_addr);
}
static inline void cdp_peer_setup
diff --git a/dp/inc/cdp_txrx_ops.h b/dp/inc/cdp_txrx_ops.h
index 6439fe2..10aa180 100644
--- a/dp/inc/cdp_txrx_ops.h
+++ b/dp/inc/cdp_txrx_ops.h
@@ -96,8 +96,7 @@
void (*txrx_pdev_deinit)(struct cdp_pdev *pdev, int force);
void *(*txrx_peer_create)
- (struct cdp_vdev *vdev, uint8_t *peer_mac_addr,
- struct cdp_ctrl_objmgr_peer *ctrl_peer);
+ (struct cdp_vdev *vdev, uint8_t *peer_mac_addr);
void (*txrx_peer_setup)
(struct cdp_vdev *vdev_hdl, void *peer_hdl);
@@ -935,8 +934,7 @@
uint8_t vdev_id, uint8_t *peer_macaddr,
uint32_t tid_mask);
int (*peer_unref_delete)(void *scn_handle, uint8_t *peer_mac,
- uint8_t *vdev_mac, enum wlan_op_mode opmode,
- void *old_peer, void *new_peer);
+ uint8_t *vdev_mac, enum wlan_op_mode opmode);
bool (*is_hw_dbs_2x2_capable)(struct wlan_objmgr_psoc *psoc);
int (*peer_add_wds_entry)(void *vdev_handle,
struct cdp_peer *peer_handle,
@@ -993,15 +991,15 @@
/**
* send_delba() - Send delba to peer
- * @pdev_handle: Dp pdev handle
- * @ctrl_peer: Peer handle
+ * @psoc: Objmgr soc handle
+ * @vdev_id: dp vdev id
* @peer_macaddr: Peer mac addr
* @tid: Tid number
*
* Return: 0 for success, non-zero for failure
*/
- int (*send_delba)(void *pdev_handle, void *ctrl_peer,
- uint8_t *peer_macaddr, uint8_t tid, void *vdev_handle,
+ int (*send_delba)(struct wlan_objmgr_psoc *psoc, uint8_t vdev_id,
+ uint8_t *peer_macaddr, uint8_t tid,
uint8_t reason_code);
int (*peer_delete_multiple_wds_entries)(void *vdev_handle,
uint8_t *dest_macaddr,
diff --git a/dp/inc/cdp_txrx_stats_struct.h b/dp/inc/cdp_txrx_stats_struct.h
index a7a1eee..9435e28 100644
--- a/dp/inc/cdp_txrx_stats_struct.h
+++ b/dp/inc/cdp_txrx_stats_struct.h
@@ -957,7 +957,8 @@
};
/* struct cdp_interface_peer_stats - interface structure for txrx peer stats
- * @peer_hdl: control path peer handle
+ * @peer_mac: peer mac address
+ * @vdev_id : vdev_id for the peer
* @last_peer_tx_rate: peer tx rate for last transmission
* @peer_tx_rate: tx rate for current transmission
* @peer_rssi: current rssi value of peer
@@ -970,17 +971,18 @@
* @rssi_changed: denotes rssi is changed
*/
struct cdp_interface_peer_stats {
- void *peer_hdl;
+ uint8_t peer_mac[QDF_MAC_ADDR_SIZE];
+ uint8_t vdev_id;
+ uint8_t rssi_changed;
uint32_t last_peer_tx_rate;
uint32_t peer_tx_rate;
- uint32_t peer_rssi;
+ uint32_t peer_rssi;
uint32_t tx_packet_count;
uint32_t rx_packet_count;
uint32_t tx_byte_count;
uint32_t rx_byte_count;
uint32_t per;
uint32_t ack_rssi;
- uint8_t rssi_changed;
};
/* Tx completions per interrupt */
diff --git a/dp/wifi3.0/dp_main.c b/dp/wifi3.0/dp_main.c
index d3b6d62..d30559a 100644
--- a/dp/wifi3.0/dp_main.c
+++ b/dp/wifi3.0/dp_main.c
@@ -139,8 +139,7 @@
struct ol_if_ops *ol_ops, uint16_t device_id);
static void dp_pktlogmod_exit(struct dp_pdev *handle);
static void *dp_peer_create_wifi3(struct cdp_vdev *vdev_handle,
- uint8_t *peer_mac_addr,
- struct cdp_ctrl_objmgr_peer *ctrl_peer);
+ uint8_t *peer_mac_addr);
static void dp_peer_delete_wifi3(void *peer_handle, uint32_t bitmap);
static void dp_ppdu_ring_reset(struct dp_pdev *pdev);
static void dp_ppdu_ring_cfg(struct dp_pdev *pdev);
@@ -4851,8 +4850,7 @@
if (wlan_op_mode_sta == vdev->opmode)
dp_peer_create_wifi3((struct cdp_vdev *)vdev,
- vdev->mac_addr.raw,
- NULL);
+ vdev->mac_addr.raw);
return (struct cdp_vdev *)vdev;
@@ -5214,7 +5212,7 @@
* Return: DP peeer handle on success, NULL on failure
*/
static void *dp_peer_create_wifi3(struct cdp_vdev *vdev_handle,
- uint8_t *peer_mac_addr, struct cdp_ctrl_objmgr_peer *ctrl_peer)
+ uint8_t *peer_mac_addr)
{
struct dp_peer *peer;
int i;
@@ -5262,9 +5260,8 @@
if (soc->cdp_soc.ol_ops->peer_unref_delete) {
soc->cdp_soc.ol_ops->peer_unref_delete(pdev->ctrl_pdev,
peer->mac_addr.raw, vdev->mac_addr.raw,
- vdev->opmode, peer->ctrl_peer, ctrl_peer);
+ vdev->opmode);
}
- peer->ctrl_peer = ctrl_peer;
dp_local_peer_id_alloc(pdev, peer);
@@ -5302,7 +5299,6 @@
/* store provided params */
peer->vdev = vdev;
- peer->ctrl_peer = ctrl_peer;
if ((vdev->opmode == wlan_op_mode_sta) &&
!qdf_mem_cmp(peer_mac_addr, &vdev->mac_addr.raw[0],
@@ -5898,10 +5894,10 @@
{
if (soc->cdp_soc.ol_ops->peer_unref_delete)
soc->cdp_soc.ol_ops->peer_unref_delete(
- pdev->ctrl_pdev,
+ soc->ctrl_psoc,
+ pdev->pdev_id,
peer->mac_addr.raw, vdev_mac_addr,
- vdev_opmode, peer->ctrl_peer,
- NULL);
+ vdev_opmode);
/*
* Peer AST list hast to be empty here
@@ -6105,19 +6101,6 @@
{
struct dp_peer *peer = (struct dp_peer *)peer_handle;
- /* redirect the peer's rx delivery function to point to a
- * discard func
- */
-
- /* Do not make ctrl_peer to NULL for connected sta peers.
- * We need ctrl_peer to release the reference during dp
- * peer free. This reference was held for
- * obj_mgr peer during the creation of dp peer.
- */
- if (!(peer->vdev && (peer->vdev->opmode != wlan_op_mode_sta) &&
- !peer->bss_peer))
- peer->ctrl_peer = NULL;
-
peer->valid = 0;
QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_INFO_HIGH,
diff --git a/dp/wifi3.0/dp_peer.c b/dp/wifi3.0/dp_peer.c
index 193ed75..23c9c9c 100644
--- a/dp/wifi3.0/dp_peer.c
+++ b/dp/wifi3.0/dp_peer.c
@@ -2507,11 +2507,10 @@
qdf_spin_unlock_bh(&rx_tid->tid_lock);
if (peer->vdev->pdev->soc->cdp_soc.ol_ops->send_delba)
peer->vdev->pdev->soc->cdp_soc.ol_ops->send_delba(
- peer->vdev->pdev->ctrl_pdev,
- peer->ctrl_peer,
- peer->mac_addr.raw,
- tid, peer->vdev->ctrl_vdev,
- delba_rcode);
+ peer->vdev->pdev->soc->ctrl_psoc,
+ peer->vdev->vdev_id,
+ peer->mac_addr.raw,
+ tid, delba_rcode);
} else {
qdf_spin_unlock_bh(&rx_tid->tid_lock);
}
@@ -2824,8 +2823,9 @@
qdf_spin_unlock_bh(&rx_tid->tid_lock);
if (peer->vdev->pdev->soc->cdp_soc.ol_ops->send_delba)
peer->vdev->pdev->soc->cdp_soc.ol_ops->send_delba(
- peer->vdev->pdev->ctrl_pdev, peer->ctrl_peer,
- peer->mac_addr.raw, tid, peer->vdev->ctrl_vdev,
+ peer->vdev->pdev->soc->ctrl_psoc,
+ peer->vdev->vdev_id,
+ peer->mac_addr.raw, tid,
rx_tid->delba_rcode);
}
return QDF_STATUS_SUCCESS;
diff --git a/dp/wifi3.0/dp_rx_defrag.c b/dp/wifi3.0/dp_rx_defrag.c
index 9a49ac1..8b14835 100644
--- a/dp/wifi3.0/dp_rx_defrag.c
+++ b/dp/wifi3.0/dp_rx_defrag.c
@@ -1292,27 +1292,22 @@
if (tkip_demic) {
msdu = frag_list_head;
- if (soc->cdp_soc.ol_ops->rx_frag_tkip_demic) {
- status = soc->cdp_soc.ol_ops->rx_frag_tkip_demic(
- (void *)peer->ctrl_peer, msdu, hdr_space);
- } else {
- qdf_mem_copy(key,
- &peer->security[index].michael_key[0],
- IEEE80211_WEP_MICLEN);
- status = dp_rx_defrag_tkip_demic(key, msdu,
- RX_PKT_TLVS_LEN +
- hdr_space);
+ qdf_mem_copy(key,
+ &peer->security[index].michael_key[0],
+ IEEE80211_WEP_MICLEN);
+ status = dp_rx_defrag_tkip_demic(key, msdu,
+ RX_PKT_TLVS_LEN +
+ hdr_space);
- if (status) {
- dp_rx_defrag_err(vdev, frag_list_head);
+ if (status) {
+ dp_rx_defrag_err(vdev, frag_list_head);
- QDF_TRACE(QDF_MODULE_ID_TXRX,
- QDF_TRACE_LEVEL_ERROR,
- "%s: TKIP demic failed status %d",
- __func__, status);
+ QDF_TRACE(QDF_MODULE_ID_TXRX,
+ QDF_TRACE_LEVEL_ERROR,
+ "%s: TKIP demic failed status %d",
+ __func__, status);
- return QDF_STATUS_E_DEFRAG_ERROR;
- }
+ return QDF_STATUS_E_DEFRAG_ERROR;
}
}
diff --git a/dp/wifi3.0/dp_rx_err.c b/dp/wifi3.0/dp_rx_err.c
index 9cb00a8..a125910 100644
--- a/dp/wifi3.0/dp_rx_err.c
+++ b/dp/wifi3.0/dp_rx_err.c
@@ -561,12 +561,12 @@
IEEE80211_REASON_QOS_SETUP_REQUIRED;
qdf_spin_unlock_bh(&rx_tid->tid_lock);
if (soc->cdp_soc.ol_ops->send_delba)
- soc->cdp_soc.ol_ops->send_delba(peer->vdev->pdev->ctrl_pdev,
- peer->ctrl_peer,
- peer->mac_addr.raw,
- tid,
- peer->vdev->ctrl_vdev,
- rx_tid->delba_rcode);
+ soc->cdp_soc.ol_ops->send_delba(
+ peer->vdev->pdev->soc->ctrl_psoc,
+ peer->vdev->vdev_id,
+ peer->mac_addr.raw,
+ tid,
+ rx_tid->delba_rcode);
} else {
qdf_spin_unlock_bh(&rx_tid->tid_lock);
}
diff --git a/dp/wifi3.0/dp_stats.c b/dp/wifi3.0/dp_stats.c
index 3bc634a..0c0ad3c 100644
--- a/dp/wifi3.0/dp_stats.c
+++ b/dp/wifi3.0/dp_stats.c
@@ -4056,7 +4056,9 @@
if ((peer_stats->rx.rssi && peer_stats_intf.rssi_changed) ||
(peer_stats->tx.tx_rate &&
peer_stats->tx.tx_rate != peer_stats->tx.last_tx_rate)) {
- peer_stats_intf.peer_hdl = peer->ctrl_peer;
+ qdf_mem_copy(peer_stats_intf.peer_mac, peer->mac_addr.raw,
+ QDF_MAC_ADDR_SIZE);
+ peer_stats_intf.vdev_id = peer->vdev->vdev_id;
peer_stats_intf.last_peer_tx_rate = peer_stats->tx.last_tx_rate;
peer_stats_intf.peer_tx_rate = peer_stats->tx.tx_rate;
peer_stats_intf.peer_rssi = peer_stats->rx.rssi;
diff --git a/dp/wifi3.0/dp_types.h b/dp/wifi3.0/dp_types.h
index 8e41285..fb6ac33 100644
--- a/dp/wifi3.0/dp_types.h
+++ b/dp/wifi3.0/dp_types.h
@@ -1979,8 +1979,6 @@
/* VDEV to which this peer is associated */
struct dp_vdev *vdev;
- struct cdp_ctrl_objmgr_peer *ctrl_peer;
-
struct dp_ast_entry *self_ast_entry;
qdf_atomic_t ref_cnt;