qcacld-3.0: Add diag event for TDLS teardown
qcacld-2.0 to qcacld-3.0 propagation Add diag event for TDLS teardown. Event contains reason for teardown and peer mac address. Change-Id: Ib04deac6cf7d61fae1a7bb0d0fb8f4dc652b3217 CRs-Fixed: 934448
This commit is contained in:

committed by
Gerrit - the friendly Code Review server

parent
eca12f2624
commit
4ef5fe00a4
@@ -160,6 +160,30 @@ typedef enum eTDLSLinkStatus {
|
|||||||
eTDLS_LINK_TEARING,
|
eTDLS_LINK_TEARING,
|
||||||
} tTDLSLinkStatus;
|
} tTDLSLinkStatus;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* enum tdls_teardown_reason - Reason for TDLS teardown
|
||||||
|
* @eTDLS_TEARDOWN_EXT_CTRL: Reason ext ctrl.
|
||||||
|
* @eTDLS_TEARDOWN_CONCURRENCY: Reason concurrency.
|
||||||
|
* @eTDLS_TEARDOWN_RSSI_THRESHOLD: Reason rssi threshold.
|
||||||
|
* @eTDLS_TEARDOWN_TXRX_THRESHOLD: Reason txrx threshold.
|
||||||
|
* @eTDLS_TEARDOWN_BTCOEX: Reason BTCOEX.
|
||||||
|
* @eTDLS_TEARDOWN_SCAN: Reason scan.
|
||||||
|
* @eTDLS_TEARDOWN_BSS_DISCONNECT: Reason bss disconnected.
|
||||||
|
* @eTDLS_TEARDOWN_ANTENNA_SWITCH: Disconnected due to antenna switch
|
||||||
|
*
|
||||||
|
* Reason to indicate in diag event of tdls teardown.
|
||||||
|
*/
|
||||||
|
enum tdls_teardown_reason {
|
||||||
|
eTDLS_TEARDOWN_EXT_CTRL,
|
||||||
|
eTDLS_TEARDOWN_CONCURRENCY,
|
||||||
|
eTDLS_TEARDOWN_RSSI_THRESHOLD,
|
||||||
|
eTDLS_TEARDOWN_TXRX_THRESHOLD,
|
||||||
|
eTDLS_TEARDOWN_BTCOEX,
|
||||||
|
eTDLS_TEARDOWN_SCAN,
|
||||||
|
eTDLS_TEARDOWN_BSS_DISCONNECT,
|
||||||
|
eTDLS_TEARDOWN_ANTENNA_SWITCH,
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* enum tTDLSLinkReason - tdls link reason
|
* enum tTDLSLinkReason - tdls link reason
|
||||||
*
|
*
|
||||||
@@ -625,4 +649,13 @@ static inline void wlan_hdd_tdls_exit(hdd_adapter_t *adapter)
|
|||||||
static inline void hdd_tdls_pre_init(hdd_context_t *hdd_ctx) { }
|
static inline void hdd_tdls_pre_init(hdd_context_t *hdd_ctx) { }
|
||||||
#endif /* End of FEATURE_WLAN_TDLS */
|
#endif /* End of FEATURE_WLAN_TDLS */
|
||||||
|
|
||||||
|
#ifdef FEATURE_WLAN_DIAG_SUPPORT
|
||||||
|
void hdd_send_wlan_tdls_teardown_event(uint32_t reason,
|
||||||
|
uint8_t *peer_mac);
|
||||||
|
#else
|
||||||
|
static inline
|
||||||
|
void hdd_send_wlan_tdls_teardown_event(uint32_t reason,
|
||||||
|
uint8_t *peer_mac) {}
|
||||||
|
#endif /* FEATURE_WLAN_DIAG_SUPPORT */
|
||||||
|
|
||||||
#endif /* __HDD_TDLS_H */
|
#endif /* __HDD_TDLS_H */
|
||||||
|
@@ -3209,6 +3209,8 @@ hdd_roam_tdls_status_update_handler(hdd_adapter_t *pAdapter,
|
|||||||
pRoamInfo->peerMac.bytes, true);
|
pRoamInfo->peerMac.bytes, true);
|
||||||
wlan_hdd_tdls_indicate_teardown(pAdapter, curr_peer,
|
wlan_hdd_tdls_indicate_teardown(pAdapter, curr_peer,
|
||||||
pRoamInfo->reasonCode);
|
pRoamInfo->reasonCode);
|
||||||
|
hdd_send_wlan_tdls_teardown_event(eTDLS_TEARDOWN_BSS_DISCONNECT,
|
||||||
|
curr_peer->peerMac);
|
||||||
status = QDF_STATUS_SUCCESS;
|
status = QDF_STATUS_SUCCESS;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -3388,6 +3390,9 @@ hdd_roam_tdls_status_update_handler(hdd_adapter_t *pAdapter,
|
|||||||
wlan_hdd_tdls_indicate_teardown
|
wlan_hdd_tdls_indicate_teardown
|
||||||
(pHddTdlsCtx->pAdapter, curr_peer,
|
(pHddTdlsCtx->pAdapter, curr_peer,
|
||||||
reason);
|
reason);
|
||||||
|
hdd_send_wlan_tdls_teardown_event(
|
||||||
|
eTDLS_TEARDOWN_BSS_DISCONNECT,
|
||||||
|
curr_peer->peerMac);
|
||||||
} else {
|
} else {
|
||||||
hddLog(LOGE,
|
hddLog(LOGE,
|
||||||
FL
|
FL
|
||||||
@@ -3436,6 +3441,9 @@ hdd_roam_tdls_status_update_handler(hdd_adapter_t *pAdapter,
|
|||||||
wlan_hdd_tdls_indicate_teardown
|
wlan_hdd_tdls_indicate_teardown
|
||||||
(pHddTdlsCtx->pAdapter, curr_peer,
|
(pHddTdlsCtx->pAdapter, curr_peer,
|
||||||
reason);
|
reason);
|
||||||
|
hdd_send_wlan_tdls_teardown_event(
|
||||||
|
eTDLS_TEARDOWN_BSS_DISCONNECT,
|
||||||
|
curr_peer->peerMac);
|
||||||
} else {
|
} else {
|
||||||
hddLog(LOGE,
|
hddLog(LOGE,
|
||||||
FL
|
FL
|
||||||
|
@@ -85,6 +85,31 @@ static void wlan_hdd_tdls_determine_channel_opclass(hdd_context_t *hddctx,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef FEATURE_WLAN_DIAG_SUPPORT
|
||||||
|
/**
|
||||||
|
* hdd_send_wlan_tdls_teardown_event()- send TDLS teardown event
|
||||||
|
* @reason: reason for tear down.
|
||||||
|
* @peer_mac: peer mac
|
||||||
|
*
|
||||||
|
* This Function sends TDLS teardown diag event
|
||||||
|
*
|
||||||
|
* Return: void.
|
||||||
|
*/
|
||||||
|
void hdd_send_wlan_tdls_teardown_event(uint32_t reason,
|
||||||
|
uint8_t *peer_mac)
|
||||||
|
{
|
||||||
|
WLAN_HOST_DIAG_EVENT_DEF(tdls_tear_down,
|
||||||
|
struct host_event_tdls_teardown);
|
||||||
|
qdf_mem_zero(&tdls_tear_down,
|
||||||
|
sizeof(tdls_tear_down));
|
||||||
|
|
||||||
|
tdls_tear_down.reason = reason;
|
||||||
|
qdf_mem_copy(tdls_tear_down.peer_mac, peer_mac, MAC_ADDR_LEN);
|
||||||
|
WLAN_HOST_DIAG_EVENT_REPORT(&tdls_tear_down,
|
||||||
|
EVENT_WLAN_TDLS_TEARDOWN);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* wlan_hdd_tdls_hash_key() - calculate tdls hash key given mac address
|
* wlan_hdd_tdls_hash_key() - calculate tdls hash key given mac address
|
||||||
* @mac: mac address
|
* @mac: mac address
|
||||||
@@ -168,6 +193,8 @@ void wlan_hdd_tdls_disable_offchan_and_teardown_links(hdd_context_t *hddctx)
|
|||||||
curr_peer->pHddTdlsCtx->pAdapter,
|
curr_peer->pHddTdlsCtx->pAdapter,
|
||||||
curr_peer,
|
curr_peer,
|
||||||
eSIR_MAC_TDLS_TEARDOWN_UNSPEC_REASON);
|
eSIR_MAC_TDLS_TEARDOWN_UNSPEC_REASON);
|
||||||
|
hdd_send_wlan_tdls_teardown_event(eTDLS_TEARDOWN_CONCURRENCY,
|
||||||
|
curr_peer->peerMac);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2764,6 +2791,9 @@ int wlan_hdd_tdls_scan_callback(hdd_adapter_t *pAdapter, struct wiphy *wiphy,
|
|||||||
(connectedPeerList[i]->pHddTdlsCtx->
|
(connectedPeerList[i]->pHddTdlsCtx->
|
||||||
pAdapter, connectedPeerList[i],
|
pAdapter, connectedPeerList[i],
|
||||||
eSIR_MAC_TDLS_TEARDOWN_UNSPEC_REASON);
|
eSIR_MAC_TDLS_TEARDOWN_UNSPEC_REASON);
|
||||||
|
hdd_send_wlan_tdls_teardown_event(
|
||||||
|
eTDLS_TEARDOWN_SCAN,
|
||||||
|
connectedPeerList[i]->peerMac);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/* schedule scan */
|
/* schedule scan */
|
||||||
@@ -4117,6 +4147,9 @@ int wlan_hdd_tdls_extctrl_deconfig_peer(hdd_adapter_t *pAdapter,
|
|||||||
} else {
|
} else {
|
||||||
wlan_hdd_tdls_indicate_teardown(pAdapter, pTdlsPeer,
|
wlan_hdd_tdls_indicate_teardown(pAdapter, pTdlsPeer,
|
||||||
eSIR_MAC_TDLS_TEARDOWN_UNSPEC_REASON);
|
eSIR_MAC_TDLS_TEARDOWN_UNSPEC_REASON);
|
||||||
|
hdd_send_wlan_tdls_teardown_event(
|
||||||
|
eTDLS_TEARDOWN_EXT_CTRL,
|
||||||
|
pTdlsPeer->peerMac);
|
||||||
}
|
}
|
||||||
if (0 != wlan_hdd_tdls_set_force_peer(pAdapter, peer, false)) {
|
if (0 != wlan_hdd_tdls_set_force_peer(pAdapter, peer, false)) {
|
||||||
QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_ERROR,
|
QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_ERROR,
|
||||||
|
@@ -299,6 +299,18 @@ struct host_event_wlan_log_complete {
|
|||||||
uint32_t reserved;
|
uint32_t reserved;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* struct host_event_tdls_teardown - tdls teardown diag event
|
||||||
|
* @reason: reason for tear down
|
||||||
|
* @peer_mac: peer mac
|
||||||
|
*
|
||||||
|
* This structure contains tdls teardown diag event info
|
||||||
|
*/
|
||||||
|
struct host_event_tdls_teardown {
|
||||||
|
uint32_t reason;
|
||||||
|
uint8_t peer_mac[QDF_MAC_ADDR_SIZE];
|
||||||
|
};
|
||||||
|
|
||||||
/*-------------------------------------------------------------------------
|
/*-------------------------------------------------------------------------
|
||||||
Function declarations and documenation
|
Function declarations and documenation
|
||||||
------------------------------------------------------------------------*/
|
------------------------------------------------------------------------*/
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2014-2015 The Linux Foundation. All rights reserved.
|
* Copyright (c) 2014-2016 The Linux Foundation. All rights reserved.
|
||||||
*
|
*
|
||||||
* Previously licensed under the ISC license by Qualcomm Atheros, Inc.
|
* Previously licensed under the ISC license by Qualcomm Atheros, Inc.
|
||||||
*
|
*
|
||||||
@@ -54,6 +54,7 @@ typedef enum {
|
|||||||
EVENT_WLAN_WAKE_LOCK = 0xAA2, /* 96 bytes payload */
|
EVENT_WLAN_WAKE_LOCK = 0xAA2, /* 96 bytes payload */
|
||||||
EVENT_WLAN_BEACON_RECEIVED = 0xAA6, /* FW event: 2726 */
|
EVENT_WLAN_BEACON_RECEIVED = 0xAA6, /* FW event: 2726 */
|
||||||
EVENT_WLAN_LOG_COMPLETE = 0xAA7, /* 16 bytes payload */
|
EVENT_WLAN_LOG_COMPLETE = 0xAA7, /* 16 bytes payload */
|
||||||
|
EVENT_WLAN_TDLS_TEARDOWN = 0xAB5,
|
||||||
|
|
||||||
EVENT_MAX_ID = 0x0FFF
|
EVENT_MAX_ID = 0x0FFF
|
||||||
} event_id_enum_type;
|
} event_id_enum_type;
|
||||||
|
Reference in New Issue
Block a user