Files
Linux_Drivers/osdrv/extdrv/wireless/mediatek/mt7603/common/sys_log.c
forum_service 213c880673 add driver of tp、wiegand-gpio and wireless
Change-Id: Ie3c11d9d85cf1a05042f5690ac711856fe8b1ad7
2023-12-22 09:56:05 +08:00

268 lines
10 KiB
C

/*
*/
#ifdef SYSTEM_LOG_SUPPORT
#include "rt_config.h"
/* for wireless system event message */
char const *pWirelessSysEventText[IW_SYS_EVENT_TYPE_NUM] = {
/* system status event */
"had associated successfully", /* IW_ASSOC_EVENT_FLAG */
"had disassociated", /* IW_DISASSOC_EVENT_FLAG */
"had deauthenticated", /* IW_DEAUTH_EVENT_FLAG */
"had been aged-out and disassociated", /* IW_AGEOUT_EVENT_FLAG */
"occurred CounterMeasures attack", /* IW_COUNTER_MEASURES_EVENT_FLAG */
"occurred replay counter different in Key Handshaking", /* IW_REPLAY_COUNTER_DIFF_EVENT_FLAG */
"occurred RSNIE different in Key Handshaking", /* IW_RSNIE_DIFF_EVENT_FLAG */
"occurred MIC different in Key Handshaking", /* IW_MIC_DIFF_EVENT_FLAG */
"occurred ICV error in RX", /* IW_ICV_ERROR_EVENT_FLAG */
"occurred MIC error in RX", /* IW_MIC_ERROR_EVENT_FLAG */
"Group Key Handshaking timeout", /* IW_GROUP_HS_TIMEOUT_EVENT_FLAG */
"Pairwise Key Handshaking timeout", /* IW_PAIRWISE_HS_TIMEOUT_EVENT_FLAG */
"RSN IE sanity check failure", /* IW_RSNIE_SANITY_FAIL_EVENT_FLAG */
"set key done in WPA/WPAPSK", /* IW_SET_KEY_DONE_WPA1_EVENT_FLAG */
"set key done in WPA2/WPA2PSK", /* IW_SET_KEY_DONE_WPA2_EVENT_FLAG */
"connects with our wireless client", /* IW_STA_LINKUP_EVENT_FLAG */
"disconnects with our wireless client", /* IW_STA_LINKDOWN_EVENT_FLAG */
"scan completed", /* IW_SCAN_COMPLETED_EVENT_FLAG */
"scan terminate!! Busy!! Enqueue fail!!", /* IW_SCAN_ENQUEUE_FAIL_EVENT_FLAG */
"channel switch to ", /* IW_CHANNEL_CHANGE_EVENT_FLAG */
"wireless mode is not support", /* IW_STA_MODE_EVENT_FLAG */
"blacklisted in MAC filter list", /* IW_MAC_FILTER_LIST_EVENT_FLAG */
"Authentication rejected because of challenge failure", /* IW_AUTH_REJECT_CHALLENGE_FAILURE */
"Scanning", /* IW_SCANNING_EVENT_FLAG */
"Start a new IBSS", /* IW_START_IBSS_FLAG */
"Join the IBSS", /* IW_JOIN_IBSS_FLAG */
"Shared WEP fail", /* IW_SHARED_WEP_FAIL*/
};
#ifdef IDS_SUPPORT
/* for wireless IDS_spoof_attack event message */
char const *pWirelessSpoofEventText[IW_SPOOF_EVENT_TYPE_NUM] = {
"detected conflict SSID", /* IW_CONFLICT_SSID_EVENT_FLAG */
"detected spoofed association response", /* IW_SPOOF_ASSOC_RESP_EVENT_FLAG */
"detected spoofed reassociation responses", /* IW_SPOOF_REASSOC_RESP_EVENT_FLAG */
"detected spoofed probe response", /* IW_SPOOF_PROBE_RESP_EVENT_FLAG */
"detected spoofed beacon", /* IW_SPOOF_BEACON_EVENT_FLAG */
"detected spoofed disassociation", /* IW_SPOOF_DISASSOC_EVENT_FLAG */
"detected spoofed authentication", /* IW_SPOOF_AUTH_EVENT_FLAG */
"detected spoofed deauthentication", /* IW_SPOOF_DEAUTH_EVENT_FLAG */
"detected spoofed unknown management frame", /* IW_SPOOF_UNKNOWN_MGMT_EVENT_FLAG */
"detected replay attack" /* IW_REPLAY_ATTACK_EVENT_FLAG */
};
/* for wireless IDS_flooding_attack event message */
char const *pWirelessFloodEventText[IW_FLOOD_EVENT_TYPE_NUM] = {
"detected authentication flooding", /* IW_FLOOD_AUTH_EVENT_FLAG */
"detected association request flooding", /* IW_FLOOD_ASSOC_REQ_EVENT_FLAG */
"detected reassociation request flooding", /* IW_FLOOD_REASSOC_REQ_EVENT_FLAG */
"detected probe request flooding", /* IW_FLOOD_PROBE_REQ_EVENT_FLAG */
"detected disassociation flooding", /* IW_FLOOD_DISASSOC_EVENT_FLAG */
"detected deauthentication flooding", /* IW_FLOOD_DEAUTH_EVENT_FLAG */
"detected 802.1x eap-request flooding" /* IW_FLOOD_EAP_REQ_EVENT_FLAG */
};
#endif /* IDS_SUPPORT */
#ifdef WSC_INCLUDED
/* for WSC wireless event message */
char const *pWirelessWscEventText[IW_WSC_EVENT_TYPE_NUM] = {
"PBC Session Overlap", /* IW_WSC_PBC_SESSION_OVERLAP */
"This WPS Registrar supports PBC", /* IW_WSC_REGISTRAR_SUPPORT_PBC */
"This WPS Registrar supports PIN", /* IW_WSC_REGISTRAR_SUPPORT_PIN */
"WPS status success", /* IW_WSC_STATUS_SUCCESS */
"WPS status fail", /* IW_WSC_STATUS_FAIL */
"WPS 2 mins time out!", /* IW_WSC_2MINS_TIMEOUT */
"WPS Send EAPOL_Start!", /* IW_WSC_SEND_EAPOL_START */
"WPS Send WscStart!", /* IW_WSC_SEND_WSC_START */
"WPS Send M1!", /* IW_WSC_SEND_M1 */
"WPS Send M2!", /* IW_WSC_SEND_M2 */
"WPS Send M3!", /* IW_WSC_SEND_M3 */
"WPS Send M4!", /* IW_WSC_SEND_M4 */
"WPS Send M5!", /* IW_WSC_SEND_M5 */
"WPS Send M6!", /* IW_WSC_SEND_M6 */
"WPS Send M7!", /* IW_WSC_SEND_M7 */
"WPS Send M8!", /* IW_WSC_SEND_M8 */
"WPS Send WscDone!", /* IW_WSC_SEND_DONE */
"WPS Send WscAck!", /* IW_WSC_SEND_ACK */
"WPS Send WscNack!", /* IW_WSC_SEND_NACK */
"WPS Receive WscStart!", /* IW_WSC_RECEIVE_WSC_START */
"WPS Receive M1!", /* IW_WSC_RECEIVE_M1 */
"WPS Receive M2!", /* IW_WSC_RECEIVE_M2 */
"WPS Receive M3!", /* IW_WSC_RECEIVE_M3 */
"WPS Receive M4!", /* IW_WSC_RECEIVE_M4 */
"WPS Receive M5!", /* IW_WSC_RECEIVE_M5 */
"WPS Receive M6!", /* IW_WSC_RECEIVE_M6 */
"WPS Receive M7!", /* IW_WSC_RECEIVE_M7 */
"WPS Receive M8!", /* IW_WSC_RECEIVE_M8 */
"WPS Receive WscDone!", /* IW_WSC_RECEIVE_DONE */
"WPS Receive WscAck!", /* IW_WSC_RECEIVE_ACK */
"WPS Receive WscNack!", /* IW_WSC_RECEIVE_NACK */
"Not only one candidate found" /* IW_WSC_MANY_CANDIDATE */
};
#endif /* WSC_INCLUDED */
#ifdef CONFIG_STA_SUPPORT
#ifdef IWSC_SUPPORT
// for IWSC wireless event messagechar
const *pWirelessIWscEventText[IW_IWSC_EVENT_TYPE_NUM] = {
"IWSC - T1 mins time out!", /* IW_IWSC_T1_TIMER_TIMEOUT */
"IWSC - T2 mins time out!", /* IW_IWSC_T2_TIMER_TIMEOUT */
"IWSC - Become Registrar", /* IW_IWSC_BECOME_REGISTRAR */
"IWSC - Become Enrollee", /* IW_IWSC_BECOME_ENROLLEE */
"IWSC - Entry time out", /* IW_IWSC_ENTRY_TIMER_TIMEOUT */
};
#endif /* IWSC_SUPPORT */
#endif /* CONFIG_STA_SUPPORT */
/*
========================================================================
Routine Description:
Send log message through wireless event
Support standard iw_event with IWEVCUSTOM. It is used below.
iwreq_data.data.flags is used to store event_flag that is defined by user.
iwreq_data.data.length is the length of the event log.
The format of the event log is composed of the entry's MAC address and
the desired log message (refer to pWirelessEventText).
ex: 11:22:33:44:55:66 has associated successfully
p.s. The requirement of Wireless Extension is v15 or newer.
========================================================================
*/
VOID RtmpDrvSendWirelessEvent(
IN VOID *pAdSrc,
IN USHORT Event_flag,
IN PUCHAR pAddr,
IN UCHAR wdev_idx,
IN CHAR Rssi)
{
PRTMP_ADAPTER pAd = (PRTMP_ADAPTER)pAdSrc;
RTMP_STRING *pBuf = NULL, *pBufPtr = NULL;
USHORT event, type, BufLen;
UCHAR event_table_len = 0;
struct wifi_dev *wdev;
if (pAd->CommonCfg.bWirelessEvent == FALSE)
return;
ASSERT(wdev_idx < WDEV_NUM_MAX);
if (wdev_idx >= WDEV_NUM_MAX)
{
DBGPRINT(RT_DEBUG_ERROR, ("%s():Invalid wdev_idx(%d)\n", __FUNCTION__, wdev_idx));
return;
}
wdev = pAd->wdev_list[wdev_idx];
type = Event_flag & 0xFF00;
event = Event_flag & 0x00FF;
switch (type)
{
case IW_SYS_EVENT_FLAG_START:
event_table_len = IW_SYS_EVENT_TYPE_NUM;
break;
#ifdef IDS_SUPPORT
case IW_SPOOF_EVENT_FLAG_START:
event_table_len = IW_SPOOF_EVENT_TYPE_NUM;
break;
case IW_FLOOD_EVENT_FLAG_START:
event_table_len = IW_FLOOD_EVENT_TYPE_NUM;
break;
#endif /* IDS_SUPPORT */
#ifdef WSC_INCLUDED
case IW_WSC_EVENT_FLAG_START:
event_table_len = IW_WSC_EVENT_TYPE_NUM;
break;
#endif /* WSC_INCLUDED */
#ifdef CONFIG_STA_SUPPORT
#ifdef IWSC_SUPPORT
case IW_IWSC_EVENT_FLAG_START:
event_table_len = IW_IWSC_EVENT_TYPE_NUM;
break;
#endif /* IWSC_SUPPORT */
#endif /* CONFIG_STA_SUPPORT */
}
if (event_table_len == 0)
{
DBGPRINT(RT_DEBUG_ERROR, ("%s : The type(%0x02x) is not valid.\n", __FUNCTION__, type));
return;
}
if (event >= event_table_len)
{
DBGPRINT(RT_DEBUG_ERROR, ("%s : The event(%0x02x) is not valid.\n", __FUNCTION__, event));
return;
}
/*Allocate memory and copy the msg. */
os_alloc_mem(NULL, (UCHAR **)&pBuf, IW_CUSTOM_MAX_LEN);
if(pBuf != NULL)
{
/*Prepare the payload */
memset(pBuf, 0, IW_CUSTOM_MAX_LEN);
pBufPtr = pBuf;
if (pAddr)
pBufPtr += sprintf(pBufPtr, "(RT2860) STA(%02x:%02x:%02x:%02x:%02x:%02x) ", PRINT_MAC(pAddr));
else if ((wdev->wdev_type == WDEV_TYPE_AP) && (wdev->func_idx < MAX_MBSSID_NUM(pAd)))
pBufPtr += sprintf(pBufPtr, "(RT2860) BSS(ra%d) ", wdev->func_idx);
else
pBufPtr += sprintf(pBufPtr, "(RT2860) ");
if (type == IW_SYS_EVENT_FLAG_START)
{
pBufPtr += sprintf(pBufPtr, "%s", pWirelessSysEventText[event]);
if (Event_flag == IW_CHANNEL_CHANGE_EVENT_FLAG)
{
pBufPtr += sprintf(pBufPtr, "%3d", Rssi);
}
}
#ifdef IDS_SUPPORT
else if (type == IW_SPOOF_EVENT_FLAG_START)
pBufPtr += sprintf(pBufPtr, "%s (RSSI=%d)", pWirelessSpoofEventText[event], Rssi);
else if (type == IW_FLOOD_EVENT_FLAG_START)
pBufPtr += sprintf(pBufPtr, "%s", pWirelessFloodEventText[event]);
#endif /* IDS_SUPPORT */
#ifdef WSC_INCLUDED
else if (type == IW_WSC_EVENT_FLAG_START)
pBufPtr += sprintf(pBufPtr, "%s", pWirelessWscEventText[event]);
#endif /* WSC_INCLUDED */
#ifdef CONFIG_STA_SUPPORT
#ifdef IWSC_SUPPORT
else if (type == IW_IWSC_EVENT_FLAG_START)
pBufPtr += sprintf(pBufPtr, "%s", pWirelessIWscEventText[event]);
#endif /* IWSC_SUPPORT */
#endif /* CONFIG_STA_SUPPORT */
else
pBufPtr += sprintf(pBufPtr, "%s", "unknown event");
pBufPtr[pBufPtr - pBuf] = '\0';
BufLen = (USHORT)(pBufPtr - pBuf);
RtmpOSWrielessEventSend(pAd->net_dev, RT_WLAN_EVENT_CUSTOM, Event_flag, NULL, (PUCHAR)pBuf, BufLen);
/*DBGPRINT(RT_DEBUG_TRACE, ("%s : %s\n", __FUNCTION__, pBuf)); */
os_free_mem(NULL, pBuf);
}
else
DBGPRINT(RT_DEBUG_ERROR, ("%s : Can't allocate memory for wireless event.\n", __FUNCTION__));
}
#endif /* SYSTEM_LOG_SUPPORT */