From 5c20975544a1496f8f8f6594b81bc41f31c6e5b5 Mon Sep 17 00:00:00 2001 From: Jiachao Wu Date: Sun, 21 Jan 2018 13:34:37 +0800 Subject: [PATCH] qcacmn: Wrapping remove_peers_for_vdev_no_lock * Wrap ol_txrx_vdev_peer_remove_cb, so that upper layer can invoke it. * Remove roam_synch_in_progress from ol_txrx_vdev_peer_remove_cb. roam_synch_in_progress is a parameter of ol_txrx_vdev_peer_remove_cb, But invoker cannot pass value to it. And it is concept of wma, it's improper in cdp. Change-Id: I6fa6c1b2df4919ad34ec931c4217bec0eefb2eac CRs-Fixed: 2176165 --- dp/inc/cdp_txrx_mob_def.h | 2 +- dp/inc/cdp_txrx_peer_ops.h | 30 +++++++++++++++++++++++++++++- 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/dp/inc/cdp_txrx_mob_def.h b/dp/inc/cdp_txrx_mob_def.h index d2a165b5ffcf..4e04966b8f28 100644 --- a/dp/inc/cdp_txrx_mob_def.h +++ b/dp/inc/cdp_txrx_mob_def.h @@ -410,7 +410,7 @@ struct ieee80211_delba_parameterset { * ol_txrx_vdev_peer_remove_cb - wma_remove_peer callback */ typedef void (*ol_txrx_vdev_peer_remove_cb)(void *handle, uint8_t *bssid, - uint8_t vdev_id, void *peer, bool roam_synch_in_progress); + uint8_t vdev_id, void *peer); /** * ol_txrx_tx_flow_control_fp - tx flow control notification diff --git a/dp/inc/cdp_txrx_peer_ops.h b/dp/inc/cdp_txrx_peer_ops.h index c10abb6bd9fa..f701ae376ec4 100644 --- a/dp/inc/cdp_txrx_peer_ops.h +++ b/dp/inc/cdp_txrx_peer_ops.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016-2017 The Linux Foundation. All rights reserved. + * Copyright (c) 2016-2018 The Linux Foundation. All rights reserved. * * Previously licensed under the ISC license by Qualcomm Atheros, Inc. * @@ -145,6 +145,34 @@ cdp_peer_remove_for_vdev(ol_txrx_soc_handle soc, return; } +/** + * cdp_peer_remove_for_vdev_no_lock() - remove peer instance from vdev + * @soc - data path soc handle + * @vdev - virtual interface instance + * @callback - remove done notification callback function pointer + * @callback_context - callback caller context + * + * remove peer instance from virtual interface without lock + * + * Return: NONE + */ +static inline void +cdp_peer_remove_for_vdev_no_lock(ol_txrx_soc_handle soc, + struct cdp_vdev *vdev, + ol_txrx_vdev_peer_remove_cb callback, + void *callback_context) +{ + if (!soc || !soc->ops || !soc->ops->peer_ops) { + QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_FATAL, + "%s invalid instance", __func__); + return; + } + + if (soc->ops->peer_ops->remove_peers_for_vdev_no_lock) + return soc->ops->peer_ops->remove_peers_for_vdev_no_lock( + vdev, callback, callback_context); +} + /** * cdp_peer_get_ref_by_addr() - Find peer by peer mac address and inc peer ref * @soc - data path soc handle