qcacld-3.0: Pass psoc instead of vdev for teardown links

As part of start_ap or connect_start to teardown active tdls peers
hdd_notify_teardown_tdls_links is called with argument vdev. But
TDLS might not be enabled on that vdev. With recent changes,
osif_priv object is initialized as part of tdls_vdev_init.
For the new interface if TDLS is not initialized then osif_priv
object will not be found and TDLS peers are not removed.

Change-Id: Idcf690bba2766664700a4851d390ee620f2fe73a
CRs-Fixed: 2460108
This commit is contained in:
Bala Venkatesh
2019-05-27 14:16:40 +05:30
کامیت شده توسط nshrivas
والد 8280a15953
کامیت 9bb9c05e83
9فایلهای تغییر یافته به همراه69 افزوده شده و 45 حذف شده

مشاهده پرونده

@@ -1280,32 +1280,30 @@ void tdls_disable_offchan_and_teardown_links(
}
}
void tdls_teardown_connections(struct wlan_objmgr_vdev *vdev)
void tdls_teardown_connections(struct wlan_objmgr_psoc *psoc)
{
struct tdls_osif_indication indication;
struct tdls_soc_priv_obj *tdls_soc;
struct wlan_objmgr_vdev *tdls_vdev_obj;
struct wlan_objmgr_vdev *tdls_vdev;
if (!vdev) {
QDF_ASSERT(0);
return;
}
tdls_soc = wlan_vdev_get_tdls_soc_obj(vdev);
tdls_soc = wlan_psoc_get_tdls_soc_obj(psoc);
if (!tdls_soc)
return;
/* Get the tdls specific vdev and clear the links */
tdls_vdev_obj = tdls_get_vdev(tdls_soc->soc, WLAN_TDLS_SB_ID);
if (tdls_vdev_obj) {
tdls_disable_offchan_and_teardown_links(tdls_vdev_obj);
wlan_objmgr_vdev_release_ref(tdls_vdev_obj, WLAN_TDLS_SB_ID);
tdls_vdev = tdls_get_vdev(psoc, WLAN_TDLS_SB_ID);
if (!tdls_vdev) {
tdls_err("Unable get the vdev");
return;
}
tdls_disable_offchan_and_teardown_links(tdls_vdev);
indication.vdev = vdev;
indication.vdev = tdls_vdev;
if (tdls_soc->tdls_event_cb)
tdls_soc->tdls_event_cb(tdls_soc->tdls_evt_cb_data,
TDLS_EVENT_TEARDOWN_LINKS_DONE,
&indication);
wlan_objmgr_vdev_release_ref(tdls_vdev, WLAN_TDLS_SB_ID);
}

مشاهده پرونده

@@ -161,11 +161,11 @@ bool tdls_is_vdev_authenticated(struct wlan_objmgr_vdev *vdev);
/**
* tdls_teardown_connections() -teardown and delete all the tdls peers
* @vdev: vdev oobject
* @psoc: psoc object
*
* Return: true or false
*/
void tdls_teardown_connections(struct wlan_objmgr_vdev *vdev);
void tdls_teardown_connections(struct wlan_objmgr_psoc *psoc);
/**
* tdls_disable_offchan_and_teardown_links - Disable offchannel

مشاهده پرونده

@@ -153,11 +153,11 @@ QDF_STATUS ucfg_tdls_responder(struct tdls_set_responder_req *msg_req);
/**
* ucfg_tdls_teardown_links() - teardown all TDLS links
* @vdev: vdev object manager
* @psoc: psoc object
*
* Return: None
*/
QDF_STATUS ucfg_tdls_teardown_links(struct wlan_objmgr_vdev *vdev);
QDF_STATUS ucfg_tdls_teardown_links(struct wlan_objmgr_psoc *psoc);
/**
* ucfg_tdls_notify_reset_adapter() - notify reset adapter
@@ -278,6 +278,20 @@ QDF_STATUS ucfg_tdls_set_rssi(struct wlan_objmgr_vdev *vdev,
* Return: void
*/
void ucfg_tdls_notify_connect_failure(struct wlan_objmgr_psoc *psoc);
/**
* ucfg_get_tdls_vdev() - Ucfg api to get tdls specific vdev object
* @psoc: wlan psoc object manager
* @dbg_id: debug id
*
* If TDLS is enabled on any vdev then return the corresponding vdev.
*
* This api increases the ref count of the returned vdev.
* Return: vdev manager pointer or NULL.
*/
struct wlan_objmgr_vdev *ucfg_get_tdls_vdev(struct wlan_objmgr_psoc *psoc,
wlan_objmgr_ref_dbgid dbg_id);
#else
static inline
@@ -330,7 +344,7 @@ void ucfg_tdls_update_tx_pkt_cnt(struct wlan_objmgr_vdev *vdev,
}
static inline
QDF_STATUS ucfg_tdls_teardown_links(struct wlan_objmgr_vdev *vdev)
QDF_STATUS ucfg_tdls_teardown_links(struct wlan_objmgr_psoc *psoc)
{
return QDF_STATUS_SUCCESS;
}
@@ -346,5 +360,13 @@ static inline
void ucfg_tdls_notify_connect_failure(struct wlan_objmgr_psoc *psoc)
{
}
static inline
struct wlan_objmgr_vdev *ucfg_get_tdls_vdev(struct wlan_objmgr_psoc *psoc,
wlan_objmgr_ref_dbgid dbg_id)
{
return NULL;
}
#endif /* FEATURE_WLAN_TDLS */
#endif

مشاهده پرونده

@@ -764,18 +764,14 @@ QDF_STATUS ucfg_tdls_responder(struct tdls_set_responder_req *req)
return status;
}
QDF_STATUS ucfg_tdls_teardown_links(struct wlan_objmgr_vdev *vdev)
QDF_STATUS ucfg_tdls_teardown_links(struct wlan_objmgr_psoc *psoc)
{
QDF_STATUS status;
struct scheduler_msg msg = {0, };
if (!vdev) {
tdls_err("vdev is NULL ");
return QDF_STATUS_E_NULL_VALUE;
}
tdls_debug("Enter ");
msg.bodyptr = vdev;
msg.bodyptr = psoc;
msg.callback = tdls_process_cmd;
msg.flush_callback = ucfg_tdls_post_msg_flush_cb;
msg.type = TDLS_CMD_TEARDOWN_LINKS;
@@ -1123,3 +1119,9 @@ void ucfg_tdls_notify_connect_failure(struct wlan_objmgr_psoc *psoc)
{
return tdls_notify_decrement_session(psoc);
}
struct wlan_objmgr_vdev *ucfg_get_tdls_vdev(struct wlan_objmgr_psoc *psoc,
wlan_objmgr_ref_dbgid dbg_id)
{
return tdls_get_vdev(psoc, dbg_id);
}