diff --git a/dp/inc/cdp_txrx_cmn.h b/dp/inc/cdp_txrx_cmn.h index 6174c118dd..88dd409b9d 100644 --- a/dp/inc/cdp_txrx_cmn.h +++ b/dp/inc/cdp_txrx_cmn.h @@ -362,7 +362,7 @@ cdp_pdev_deinit(ol_txrx_soc_handle soc, struct cdp_pdev *pdev, int force) 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 @@ static inline void *cdp_peer_create 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 6439fe2905..10aa180b59 100644 --- a/dp/inc/cdp_txrx_ops.h +++ b/dp/inc/cdp_txrx_ops.h @@ -96,8 +96,7 @@ struct cdp_cmn_ops { 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 @@ struct ol_if_ops { 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 @@ struct ol_if_ops { /** * 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 a7a1eee27d..9435e283ef 100644 --- a/dp/inc/cdp_txrx_stats_struct.h +++ b/dp/inc/cdp_txrx_stats_struct.h @@ -957,7 +957,8 @@ struct cdp_peer_stats { }; /* 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 @@ struct cdp_peer_stats { * @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 d3b6d62913..d30559a1ce 100644 --- a/dp/wifi3.0/dp_main.c +++ b/dp/wifi3.0/dp_main.c @@ -139,8 +139,7 @@ dp_soc_attach(struct cdp_ctrl_objmgr_psoc *ctrl_psoc, HTC_HANDLE htc_handle, 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 @@ static struct cdp_vdev *dp_vdev_attach_wifi3(struct cdp_pdev *txrx_pdev, 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 @@ static inline void dp_peer_rx_bufq_resources_init(struct dp_peer *peer) * 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 @@ static void *dp_peer_create_wifi3(struct cdp_vdev *vdev_handle, 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 @@ static void *dp_peer_create_wifi3(struct cdp_vdev *vdev_handle, /* 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 @@ static void dp_peer_release_mem(struct dp_soc *soc, { 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 @@ static void dp_peer_delete_wifi3(void *peer_handle, uint32_t bitmap) { 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 193ed75971..23c9c9c237 100644 --- a/dp/wifi3.0/dp_peer.c +++ b/dp/wifi3.0/dp_peer.c @@ -2507,11 +2507,10 @@ static void dp_teardown_256_ba_sessions(struct dp_peer *peer) 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 @@ int dp_delba_tx_completion_wifi3(void *peer_handle, 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 9a49ac1968..8b148359d7 100644 --- a/dp/wifi3.0/dp_rx_defrag.c +++ b/dp/wifi3.0/dp_rx_defrag.c @@ -1292,27 +1292,22 @@ static QDF_STATUS dp_rx_defrag(struct dp_peer *peer, unsigned tid, 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 9cb00a8531..a125910b5f 100644 --- a/dp/wifi3.0/dp_rx_err.c +++ b/dp/wifi3.0/dp_rx_err.c @@ -561,12 +561,12 @@ dp_2k_jump_handle(struct dp_soc *soc, 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 3bc634a99e..0c0ad3c33b 100644 --- a/dp/wifi3.0/dp_stats.c +++ b/dp/wifi3.0/dp_stats.c @@ -4056,7 +4056,9 @@ QDF_STATUS dp_peer_stats_notify(struct dp_pdev *dp_pdev, struct dp_peer *peer) 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 8e4128544f..fb6ac3366b 100644 --- a/dp/wifi3.0/dp_types.h +++ b/dp/wifi3.0/dp_types.h @@ -1979,8 +1979,6 @@ struct dp_peer { /* 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;