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
This commit is contained in:

committed by
nshrivas

parent
fb323024ac
commit
715fdc32ec
@@ -362,7 +362,7 @@ cdp_pdev_deinit(ol_txrx_soc_handle soc, struct cdp_pdev *pdev, int force)
|
|||||||
|
|
||||||
static inline void *cdp_peer_create
|
static inline void *cdp_peer_create
|
||||||
(ol_txrx_soc_handle soc, struct cdp_vdev *vdev,
|
(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) {
|
if (!soc || !soc->ops) {
|
||||||
QDF_TRACE(QDF_MODULE_ID_CDP, QDF_TRACE_LEVEL_DEBUG,
|
QDF_TRACE(QDF_MODULE_ID_CDP, QDF_TRACE_LEVEL_DEBUG,
|
||||||
@@ -376,7 +376,7 @@ static inline void *cdp_peer_create
|
|||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
return soc->ops->cmn_drv_ops->txrx_peer_create(vdev,
|
return soc->ops->cmn_drv_ops->txrx_peer_create(vdev,
|
||||||
peer_mac_addr, ctrl_peer);
|
peer_mac_addr);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void cdp_peer_setup
|
static inline void cdp_peer_setup
|
||||||
|
@@ -96,8 +96,7 @@ struct cdp_cmn_ops {
|
|||||||
void (*txrx_pdev_deinit)(struct cdp_pdev *pdev, int force);
|
void (*txrx_pdev_deinit)(struct cdp_pdev *pdev, int force);
|
||||||
|
|
||||||
void *(*txrx_peer_create)
|
void *(*txrx_peer_create)
|
||||||
(struct cdp_vdev *vdev, uint8_t *peer_mac_addr,
|
(struct cdp_vdev *vdev, uint8_t *peer_mac_addr);
|
||||||
struct cdp_ctrl_objmgr_peer *ctrl_peer);
|
|
||||||
|
|
||||||
void (*txrx_peer_setup)
|
void (*txrx_peer_setup)
|
||||||
(struct cdp_vdev *vdev_hdl, void *peer_hdl);
|
(struct cdp_vdev *vdev_hdl, void *peer_hdl);
|
||||||
@@ -935,8 +934,7 @@ struct ol_if_ops {
|
|||||||
uint8_t vdev_id, uint8_t *peer_macaddr,
|
uint8_t vdev_id, uint8_t *peer_macaddr,
|
||||||
uint32_t tid_mask);
|
uint32_t tid_mask);
|
||||||
int (*peer_unref_delete)(void *scn_handle, uint8_t *peer_mac,
|
int (*peer_unref_delete)(void *scn_handle, uint8_t *peer_mac,
|
||||||
uint8_t *vdev_mac, enum wlan_op_mode opmode,
|
uint8_t *vdev_mac, enum wlan_op_mode opmode);
|
||||||
void *old_peer, void *new_peer);
|
|
||||||
bool (*is_hw_dbs_2x2_capable)(struct wlan_objmgr_psoc *psoc);
|
bool (*is_hw_dbs_2x2_capable)(struct wlan_objmgr_psoc *psoc);
|
||||||
int (*peer_add_wds_entry)(void *vdev_handle,
|
int (*peer_add_wds_entry)(void *vdev_handle,
|
||||||
struct cdp_peer *peer_handle,
|
struct cdp_peer *peer_handle,
|
||||||
@@ -993,15 +991,15 @@ struct ol_if_ops {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* send_delba() - Send delba to peer
|
* send_delba() - Send delba to peer
|
||||||
* @pdev_handle: Dp pdev handle
|
* @psoc: Objmgr soc handle
|
||||||
* @ctrl_peer: Peer handle
|
* @vdev_id: dp vdev id
|
||||||
* @peer_macaddr: Peer mac addr
|
* @peer_macaddr: Peer mac addr
|
||||||
* @tid: Tid number
|
* @tid: Tid number
|
||||||
*
|
*
|
||||||
* Return: 0 for success, non-zero for failure
|
* Return: 0 for success, non-zero for failure
|
||||||
*/
|
*/
|
||||||
int (*send_delba)(void *pdev_handle, void *ctrl_peer,
|
int (*send_delba)(struct wlan_objmgr_psoc *psoc, uint8_t vdev_id,
|
||||||
uint8_t *peer_macaddr, uint8_t tid, void *vdev_handle,
|
uint8_t *peer_macaddr, uint8_t tid,
|
||||||
uint8_t reason_code);
|
uint8_t reason_code);
|
||||||
int (*peer_delete_multiple_wds_entries)(void *vdev_handle,
|
int (*peer_delete_multiple_wds_entries)(void *vdev_handle,
|
||||||
uint8_t *dest_macaddr,
|
uint8_t *dest_macaddr,
|
||||||
|
@@ -957,7 +957,8 @@ struct cdp_peer_stats {
|
|||||||
};
|
};
|
||||||
|
|
||||||
/* struct cdp_interface_peer_stats - interface structure for txrx 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
|
* @last_peer_tx_rate: peer tx rate for last transmission
|
||||||
* @peer_tx_rate: tx rate for current transmission
|
* @peer_tx_rate: tx rate for current transmission
|
||||||
* @peer_rssi: current rssi value of peer
|
* @peer_rssi: current rssi value of peer
|
||||||
@@ -970,17 +971,18 @@ struct cdp_peer_stats {
|
|||||||
* @rssi_changed: denotes rssi is changed
|
* @rssi_changed: denotes rssi is changed
|
||||||
*/
|
*/
|
||||||
struct cdp_interface_peer_stats {
|
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 last_peer_tx_rate;
|
||||||
uint32_t peer_tx_rate;
|
uint32_t peer_tx_rate;
|
||||||
uint32_t peer_rssi;
|
uint32_t peer_rssi;
|
||||||
uint32_t tx_packet_count;
|
uint32_t tx_packet_count;
|
||||||
uint32_t rx_packet_count;
|
uint32_t rx_packet_count;
|
||||||
uint32_t tx_byte_count;
|
uint32_t tx_byte_count;
|
||||||
uint32_t rx_byte_count;
|
uint32_t rx_byte_count;
|
||||||
uint32_t per;
|
uint32_t per;
|
||||||
uint32_t ack_rssi;
|
uint32_t ack_rssi;
|
||||||
uint8_t rssi_changed;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Tx completions per interrupt */
|
/* Tx completions per interrupt */
|
||||||
|
@@ -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);
|
struct ol_if_ops *ol_ops, uint16_t device_id);
|
||||||
static void dp_pktlogmod_exit(struct dp_pdev *handle);
|
static void dp_pktlogmod_exit(struct dp_pdev *handle);
|
||||||
static void *dp_peer_create_wifi3(struct cdp_vdev *vdev_handle,
|
static void *dp_peer_create_wifi3(struct cdp_vdev *vdev_handle,
|
||||||
uint8_t *peer_mac_addr,
|
uint8_t *peer_mac_addr);
|
||||||
struct cdp_ctrl_objmgr_peer *ctrl_peer);
|
|
||||||
static void dp_peer_delete_wifi3(void *peer_handle, uint32_t bitmap);
|
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_reset(struct dp_pdev *pdev);
|
||||||
static void dp_ppdu_ring_cfg(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)
|
if (wlan_op_mode_sta == vdev->opmode)
|
||||||
dp_peer_create_wifi3((struct cdp_vdev *)vdev,
|
dp_peer_create_wifi3((struct cdp_vdev *)vdev,
|
||||||
vdev->mac_addr.raw,
|
vdev->mac_addr.raw);
|
||||||
NULL);
|
|
||||||
|
|
||||||
return (struct cdp_vdev *)vdev;
|
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
|
* Return: DP peeer handle on success, NULL on failure
|
||||||
*/
|
*/
|
||||||
static void *dp_peer_create_wifi3(struct cdp_vdev *vdev_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)
|
||||||
{
|
{
|
||||||
struct dp_peer *peer;
|
struct dp_peer *peer;
|
||||||
int i;
|
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) {
|
if (soc->cdp_soc.ol_ops->peer_unref_delete) {
|
||||||
soc->cdp_soc.ol_ops->peer_unref_delete(pdev->ctrl_pdev,
|
soc->cdp_soc.ol_ops->peer_unref_delete(pdev->ctrl_pdev,
|
||||||
peer->mac_addr.raw, vdev->mac_addr.raw,
|
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);
|
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 */
|
/* store provided params */
|
||||||
peer->vdev = vdev;
|
peer->vdev = vdev;
|
||||||
peer->ctrl_peer = ctrl_peer;
|
|
||||||
|
|
||||||
if ((vdev->opmode == wlan_op_mode_sta) &&
|
if ((vdev->opmode == wlan_op_mode_sta) &&
|
||||||
!qdf_mem_cmp(peer_mac_addr, &vdev->mac_addr.raw[0],
|
!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)
|
if (soc->cdp_soc.ol_ops->peer_unref_delete)
|
||||||
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,
|
peer->mac_addr.raw, vdev_mac_addr,
|
||||||
vdev_opmode, peer->ctrl_peer,
|
vdev_opmode);
|
||||||
NULL);
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Peer AST list hast to be empty here
|
* 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;
|
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;
|
peer->valid = 0;
|
||||||
|
|
||||||
QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_INFO_HIGH,
|
QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_INFO_HIGH,
|
||||||
|
@@ -2507,11 +2507,10 @@ static void dp_teardown_256_ba_sessions(struct dp_peer *peer)
|
|||||||
qdf_spin_unlock_bh(&rx_tid->tid_lock);
|
qdf_spin_unlock_bh(&rx_tid->tid_lock);
|
||||||
if (peer->vdev->pdev->soc->cdp_soc.ol_ops->send_delba)
|
if (peer->vdev->pdev->soc->cdp_soc.ol_ops->send_delba)
|
||||||
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->vdev->pdev->soc->ctrl_psoc,
|
||||||
peer->ctrl_peer,
|
peer->vdev->vdev_id,
|
||||||
peer->mac_addr.raw,
|
peer->mac_addr.raw,
|
||||||
tid, peer->vdev->ctrl_vdev,
|
tid, delba_rcode);
|
||||||
delba_rcode);
|
|
||||||
} else {
|
} else {
|
||||||
qdf_spin_unlock_bh(&rx_tid->tid_lock);
|
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);
|
qdf_spin_unlock_bh(&rx_tid->tid_lock);
|
||||||
if (peer->vdev->pdev->soc->cdp_soc.ol_ops->send_delba)
|
if (peer->vdev->pdev->soc->cdp_soc.ol_ops->send_delba)
|
||||||
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->vdev->pdev->soc->ctrl_psoc,
|
||||||
peer->mac_addr.raw, tid, peer->vdev->ctrl_vdev,
|
peer->vdev->vdev_id,
|
||||||
|
peer->mac_addr.raw, tid,
|
||||||
rx_tid->delba_rcode);
|
rx_tid->delba_rcode);
|
||||||
}
|
}
|
||||||
return QDF_STATUS_SUCCESS;
|
return QDF_STATUS_SUCCESS;
|
||||||
|
@@ -1292,27 +1292,22 @@ static QDF_STATUS dp_rx_defrag(struct dp_peer *peer, unsigned tid,
|
|||||||
|
|
||||||
if (tkip_demic) {
|
if (tkip_demic) {
|
||||||
msdu = frag_list_head;
|
msdu = frag_list_head;
|
||||||
if (soc->cdp_soc.ol_ops->rx_frag_tkip_demic) {
|
qdf_mem_copy(key,
|
||||||
status = soc->cdp_soc.ol_ops->rx_frag_tkip_demic(
|
&peer->security[index].michael_key[0],
|
||||||
(void *)peer->ctrl_peer, msdu, hdr_space);
|
IEEE80211_WEP_MICLEN);
|
||||||
} else {
|
status = dp_rx_defrag_tkip_demic(key, msdu,
|
||||||
qdf_mem_copy(key,
|
RX_PKT_TLVS_LEN +
|
||||||
&peer->security[index].michael_key[0],
|
hdr_space);
|
||||||
IEEE80211_WEP_MICLEN);
|
|
||||||
status = dp_rx_defrag_tkip_demic(key, msdu,
|
|
||||||
RX_PKT_TLVS_LEN +
|
|
||||||
hdr_space);
|
|
||||||
|
|
||||||
if (status) {
|
if (status) {
|
||||||
dp_rx_defrag_err(vdev, frag_list_head);
|
dp_rx_defrag_err(vdev, frag_list_head);
|
||||||
|
|
||||||
QDF_TRACE(QDF_MODULE_ID_TXRX,
|
QDF_TRACE(QDF_MODULE_ID_TXRX,
|
||||||
QDF_TRACE_LEVEL_ERROR,
|
QDF_TRACE_LEVEL_ERROR,
|
||||||
"%s: TKIP demic failed status %d",
|
"%s: TKIP demic failed status %d",
|
||||||
__func__, status);
|
__func__, status);
|
||||||
|
|
||||||
return QDF_STATUS_E_DEFRAG_ERROR;
|
return QDF_STATUS_E_DEFRAG_ERROR;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -561,12 +561,12 @@ dp_2k_jump_handle(struct dp_soc *soc,
|
|||||||
IEEE80211_REASON_QOS_SETUP_REQUIRED;
|
IEEE80211_REASON_QOS_SETUP_REQUIRED;
|
||||||
qdf_spin_unlock_bh(&rx_tid->tid_lock);
|
qdf_spin_unlock_bh(&rx_tid->tid_lock);
|
||||||
if (soc->cdp_soc.ol_ops->send_delba)
|
if (soc->cdp_soc.ol_ops->send_delba)
|
||||||
soc->cdp_soc.ol_ops->send_delba(peer->vdev->pdev->ctrl_pdev,
|
soc->cdp_soc.ol_ops->send_delba(
|
||||||
peer->ctrl_peer,
|
peer->vdev->pdev->soc->ctrl_psoc,
|
||||||
peer->mac_addr.raw,
|
peer->vdev->vdev_id,
|
||||||
tid,
|
peer->mac_addr.raw,
|
||||||
peer->vdev->ctrl_vdev,
|
tid,
|
||||||
rx_tid->delba_rcode);
|
rx_tid->delba_rcode);
|
||||||
} else {
|
} else {
|
||||||
qdf_spin_unlock_bh(&rx_tid->tid_lock);
|
qdf_spin_unlock_bh(&rx_tid->tid_lock);
|
||||||
}
|
}
|
||||||
|
@@ -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) ||
|
if ((peer_stats->rx.rssi && peer_stats_intf.rssi_changed) ||
|
||||||
(peer_stats->tx.tx_rate &&
|
(peer_stats->tx.tx_rate &&
|
||||||
peer_stats->tx.tx_rate != peer_stats->tx.last_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.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_tx_rate = peer_stats->tx.tx_rate;
|
||||||
peer_stats_intf.peer_rssi = peer_stats->rx.rssi;
|
peer_stats_intf.peer_rssi = peer_stats->rx.rssi;
|
||||||
|
@@ -1979,8 +1979,6 @@ struct dp_peer {
|
|||||||
/* VDEV to which this peer is associated */
|
/* VDEV to which this peer is associated */
|
||||||
struct dp_vdev *vdev;
|
struct dp_vdev *vdev;
|
||||||
|
|
||||||
struct cdp_ctrl_objmgr_peer *ctrl_peer;
|
|
||||||
|
|
||||||
struct dp_ast_entry *self_ast_entry;
|
struct dp_ast_entry *self_ast_entry;
|
||||||
|
|
||||||
qdf_atomic_t ref_cnt;
|
qdf_atomic_t ref_cnt;
|
||||||
|
Reference in New Issue
Block a user