qcacmn: Add host data path functions for TDLS

Add and enable host data path functions for Napier
TDLS.

Change-Id: I228c2dcf4e8d797d173007a3306d112aca5ba52f
CRs-Fixed: 2114813
This commit is contained in:
Kabilan Kannan 2017-09-07 20:06:17 -07:00 • committed by snandini
commit 60e3b3062d
8 changed files with 153 additions and 8 deletions

View file

@ -1133,6 +1133,10 @@ QDF_STATUS tdls_process_del_peer(struct tdls_oper_request *req)
struct wlan_serialization_command cmd = {0,};
enum wlan_serialization_status ser_cmd_status;
struct wlan_objmgr_vdev *vdev;
struct tdls_vdev_priv_obj *vdev_obj;
struct tdls_soc_priv_obj *soc_obj;
uint8_t *mac;
struct tdls_peer *peer;
QDF_STATUS status = QDF_STATUS_SUCCESS;
if (!req || !req->vdev) {
@ -1140,7 +1144,35 @@ QDF_STATUS tdls_process_del_peer(struct tdls_oper_request *req)
status = QDF_STATUS_E_INVAL;
goto error;
}
vdev = req->vdev;
/* vdev reference cnt is acquired in ucfg_tdls_oper */
vdev_obj = wlan_vdev_get_tdls_vdev_obj(vdev);
soc_obj = wlan_vdev_get_tdls_soc_obj(vdev);
if (!vdev_obj || !soc_obj) {
tdls_err("tdls vdev_obj: %p soc_obj: %p", vdev_obj, soc_obj);
status = QDF_STATUS_E_NULL_VALUE;
goto error;
}
mac = req->peer_addr;
peer = tdls_find_peer(vdev_obj, mac);
if (!peer) {
tdls_err(QDF_MAC_ADDRESS_STR
" not found, ignore NL80211_TDLS_ENABLE_LINK",
QDF_MAC_ADDR_ARRAY(mac));
status = QDF_STATUS_E_INVAL;
goto error;
}
if (soc_obj->tdls_dp_vdev_update)
soc_obj->tdls_dp_vdev_update(&soc_obj->soc,
peer->sta_id,
soc_obj->tdls_update_dp_vdev_flags,
false);
cmd.cmd_type = WLAN_SER_CMD_TDLS_DEL_PEER;
cmd.cmd_id = 0;
cmd.cmd_cb = (wlan_serialization_cmd_callback)
@ -1904,8 +1936,7 @@ QDF_STATUS tdls_process_remove_force_peer(struct tdls_oper_request *req)
soc_obj->tdls_dp_vdev_update(&soc_obj->soc,
peer->sta_id,
soc_obj->tdls_update_dp_vdev_flags,
((peer->link_status ==
TDLS_LINK_CONNECTED) ? true : false));
false);
if (soc_obj->tdls_event_cb) {
qdf_mem_copy(ind.peer_mac, macaddr, QDF_MAC_ADDR_SIZE);

View file

@ -532,8 +532,7 @@ void tdls_indicate_teardown(struct tdls_vdev_priv_obj *tdls_vdev,
tdls_soc->tdls_dp_vdev_update(&tdls_soc->soc,
curr_peer->sta_id,
tdls_soc->tdls_update_dp_vdev_flags,
((curr_peer->link_status ==
TDLS_LINK_CONNECTED) ? true : false));
false);
indication.reason = reason;
indication.vdev = tdls_vdev->vdev;

View file

@ -218,6 +218,7 @@ QDF_STATUS ucfg_tdls_update_config(struct wlan_objmgr_psoc *psoc,
soc_obj->tdls_update_peer_state = req->tdls_update_peer_state;
soc_obj->tdls_del_all_peers = req->tdls_del_all_peers;
soc_obj->tdls_update_dp_vdev_flags = req->tdls_update_dp_vdev_flags;
soc_obj->tdls_dp_vdev_update = req->tdls_dp_vdev_update;
tdls_pm_call_backs.tdls_notify_increment_session =
tdls_notify_increment_session;