qcacmn: Log additional EAPOL packets
Add changes to log additional EAPOL packet types. Change-Id: I02f1de89f7e0fcf68cea20208df1ed153126852d CRs-Fixed: 3370979
This commit is contained in:

committed by
Madan Koyyalamudi

parent
213581ab0b
commit
7e50aa48ab
@@ -110,6 +110,7 @@
|
|||||||
#define EAPOL_PACKET_TYPE_START 1
|
#define EAPOL_PACKET_TYPE_START 1
|
||||||
#define EAPOL_PACKET_TYPE_LOGOFF 2
|
#define EAPOL_PACKET_TYPE_LOGOFF 2
|
||||||
#define EAPOL_PACKET_TYPE_KEY 3
|
#define EAPOL_PACKET_TYPE_KEY 3
|
||||||
|
#define EAPOL_PACKET_TYPE_ASF 4
|
||||||
|
|
||||||
#define EAPOL_KEY_TYPE_MASK 0x0800
|
#define EAPOL_KEY_TYPE_MASK 0x0800
|
||||||
#define EAPOL_KEY_ENCRYPTED_MASK 0x0010
|
#define EAPOL_KEY_ENCRYPTED_MASK 0x0010
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2014-2021 The Linux Foundation. All rights reserved.
|
* Copyright (c) 2014-2021 The Linux Foundation. All rights reserved.
|
||||||
* Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
* Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||||
*
|
*
|
||||||
* Permission to use, copy, modify, and/or distribute this software for
|
* Permission to use, copy, modify, and/or distribute this software for
|
||||||
* any purpose with or without fee is hereby granted, provided that the
|
* any purpose with or without fee is hereby granted, provided that the
|
||||||
@@ -1016,6 +1016,15 @@ struct qdf_mac_addr {
|
|||||||
* @QDF_ROAM_EVENTID: roam eventid from fw
|
* @QDF_ROAM_EVENTID: roam eventid from fw
|
||||||
* @QDF_PROTO_DNS_QUERY: dns query
|
* @QDF_PROTO_DNS_QUERY: dns query
|
||||||
* @QDF_PROTO_DNS_RES: dns response
|
* @QDF_PROTO_DNS_RES: dns response
|
||||||
|
* QDF_PROTO_EAP_REQUEST: EAP Request
|
||||||
|
* QDF_PROTO_EAP_RESPONSE: EAP Response
|
||||||
|
* QDF_PROTO_EAP_SUCCESS: EAP Success
|
||||||
|
* QDF_PROTO_EAP_FAILURE: EAP Filure
|
||||||
|
* QDF_PROTO_EAP_INITIATE: EAP Initiate
|
||||||
|
* QDF_PROTO_EAP_FINISH: EAP Finish
|
||||||
|
* QDF_PROTO_EAPOL_START: EAPOL-Start message
|
||||||
|
* QDF_PROTO_EAPOL_LOGOFF: EAPOL Log Off message.
|
||||||
|
* QDF_PROTO_EAPOL_ASF: ASF Alert message
|
||||||
* @QDF_PROTO_SUBTYPE_MAX: subtype max
|
* @QDF_PROTO_SUBTYPE_MAX: subtype max
|
||||||
*/
|
*/
|
||||||
enum qdf_proto_subtype {
|
enum qdf_proto_subtype {
|
||||||
@@ -1055,6 +1064,15 @@ enum qdf_proto_subtype {
|
|||||||
QDF_ROAM_EVENTID,
|
QDF_ROAM_EVENTID,
|
||||||
QDF_PROTO_DNS_QUERY,
|
QDF_PROTO_DNS_QUERY,
|
||||||
QDF_PROTO_DNS_RES,
|
QDF_PROTO_DNS_RES,
|
||||||
|
QDF_PROTO_EAP_REQUEST,
|
||||||
|
QDF_PROTO_EAP_RESPONSE,
|
||||||
|
QDF_PROTO_EAP_SUCCESS,
|
||||||
|
QDF_PROTO_EAP_FAILURE,
|
||||||
|
QDF_PROTO_EAP_INITIATE,
|
||||||
|
QDF_PROTO_EAP_FINISH,
|
||||||
|
QDF_PROTO_EAPOL_START,
|
||||||
|
QDF_PROTO_EAPOL_LOGOFF,
|
||||||
|
QDF_PROTO_EAPOL_ASF,
|
||||||
QDF_PROTO_SUBTYPE_MAX
|
QDF_PROTO_SUBTYPE_MAX
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -1512,11 +1512,9 @@ __qdf_nbuf_data_get_dhcp_subtype(uint8_t *data)
|
|||||||
#define EAPOL_WPA_KEY_INFO_ENCR_KEY_DATA BIT(12) /* IEEE 802.11i/RSN only */
|
#define EAPOL_WPA_KEY_INFO_ENCR_KEY_DATA BIT(12) /* IEEE 802.11i/RSN only */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* __qdf_nbuf_data_get_eapol_subtype() - get the subtype of EAPOL packet.
|
* __qdf_nbuf_data_get_eapol_key() - Get EAPOL key
|
||||||
* @data: Pointer to EAPOL packet data buffer
|
* @data: Pointer to EAPOL packet data buffer
|
||||||
*
|
*
|
||||||
* This func. returns the subtype of EAPOL packet.
|
|
||||||
*
|
|
||||||
* We can distinguish M1/M3 from M2/M4 by the ack bit in the keyinfo field
|
* We can distinguish M1/M3 from M2/M4 by the ack bit in the keyinfo field
|
||||||
* The ralationship between the ack bit and EAPOL type is as follows:
|
* The ralationship between the ack bit and EAPOL type is as follows:
|
||||||
*
|
*
|
||||||
@@ -1531,8 +1529,8 @@ __qdf_nbuf_data_get_dhcp_subtype(uint8_t *data)
|
|||||||
*
|
*
|
||||||
* Return: subtype of the EAPOL packet.
|
* Return: subtype of the EAPOL packet.
|
||||||
*/
|
*/
|
||||||
enum qdf_proto_subtype
|
static inline enum qdf_proto_subtype
|
||||||
__qdf_nbuf_data_get_eapol_subtype(uint8_t *data)
|
__qdf_nbuf_data_get_eapol_key(uint8_t *data)
|
||||||
{
|
{
|
||||||
uint16_t key_info, key_data_length;
|
uint16_t key_info, key_data_length;
|
||||||
enum qdf_proto_subtype subtype;
|
enum qdf_proto_subtype subtype;
|
||||||
@@ -1561,6 +1559,64 @@ __qdf_nbuf_data_get_eapol_subtype(uint8_t *data)
|
|||||||
return subtype;
|
return subtype;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* __qdf_nbuf_data_get_eap_code() - Get EAPOL code
|
||||||
|
* @data: Pointer to EAPOL packet data buffer
|
||||||
|
*
|
||||||
|
* Return: subtype of the EAPOL packet.
|
||||||
|
*/
|
||||||
|
static inline enum qdf_proto_subtype
|
||||||
|
__qdf_nbuf_data_get_eap_code(uint8_t *data)
|
||||||
|
{
|
||||||
|
uint8_t code = *(data + EAP_CODE_OFFSET);
|
||||||
|
|
||||||
|
switch (code) {
|
||||||
|
case QDF_EAP_REQUEST:
|
||||||
|
return QDF_PROTO_EAP_REQUEST;
|
||||||
|
case QDF_EAP_RESPONSE:
|
||||||
|
return QDF_PROTO_EAP_RESPONSE;
|
||||||
|
case QDF_EAP_SUCCESS:
|
||||||
|
return QDF_PROTO_EAP_SUCCESS;
|
||||||
|
case QDF_EAP_FAILURE:
|
||||||
|
return QDF_PROTO_EAP_FAILURE;
|
||||||
|
case QDF_EAP_INITIATE:
|
||||||
|
return QDF_PROTO_EAP_INITIATE;
|
||||||
|
case QDF_EAP_FINISH:
|
||||||
|
return QDF_PROTO_EAP_FINISH;
|
||||||
|
default:
|
||||||
|
return QDF_PROTO_INVALID;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* __qdf_nbuf_data_get_eapol_subtype() - get the subtype of EAPOL packet.
|
||||||
|
* @data: Pointer to EAPOL packet data buffer
|
||||||
|
*
|
||||||
|
* This func. returns the subtype of EAPOL packet.
|
||||||
|
*
|
||||||
|
* Return: subtype of the EAPOL packet.
|
||||||
|
*/
|
||||||
|
enum qdf_proto_subtype
|
||||||
|
__qdf_nbuf_data_get_eapol_subtype(uint8_t *data)
|
||||||
|
{
|
||||||
|
uint8_t pkt_type = *(data + EAPOL_PACKET_TYPE_OFFSET);
|
||||||
|
|
||||||
|
switch (pkt_type) {
|
||||||
|
case EAPOL_PACKET_TYPE_EAP:
|
||||||
|
return __qdf_nbuf_data_get_eap_code(data);
|
||||||
|
case EAPOL_PACKET_TYPE_START:
|
||||||
|
return QDF_PROTO_EAPOL_START;
|
||||||
|
case EAPOL_PACKET_TYPE_LOGOFF:
|
||||||
|
return QDF_PROTO_EAPOL_LOGOFF;
|
||||||
|
case EAPOL_PACKET_TYPE_KEY:
|
||||||
|
return __qdf_nbuf_data_get_eapol_key(data);
|
||||||
|
case EAPOL_PACKET_TYPE_ASF:
|
||||||
|
return QDF_PROTO_EAPOL_ASF;
|
||||||
|
default:
|
||||||
|
return QDF_PROTO_INVALID;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
qdf_export_symbol(__qdf_nbuf_data_get_eapol_subtype);
|
qdf_export_symbol(__qdf_nbuf_data_get_eapol_subtype);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2014-2021 The Linux Foundation. All rights reserved.
|
* Copyright (c) 2014-2021 The Linux Foundation. All rights reserved.
|
||||||
* Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
* Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||||
*
|
*
|
||||||
* Permission to use, copy, modify, and/or distribute this software for
|
* Permission to use, copy, modify, and/or distribute this software for
|
||||||
* any purpose with or without fee is hereby granted, provided that the
|
* any purpose with or without fee is hereby granted, provided that the
|
||||||
@@ -1237,6 +1237,24 @@ static const char *qdf_dp_subtype_to_str(enum qdf_proto_subtype subtype)
|
|||||||
return "ROAM COMP";
|
return "ROAM COMP";
|
||||||
case QDF_ROAM_EVENTID:
|
case QDF_ROAM_EVENTID:
|
||||||
return "ROAM EVENTID";
|
return "ROAM EVENTID";
|
||||||
|
case QDF_PROTO_EAP_REQUEST:
|
||||||
|
return "EAP REQ";
|
||||||
|
case QDF_PROTO_EAP_RESPONSE:
|
||||||
|
return "EAP RSP";
|
||||||
|
case QDF_PROTO_EAP_SUCCESS:
|
||||||
|
return "EAP SUC";
|
||||||
|
case QDF_PROTO_EAP_FAILURE:
|
||||||
|
return "EAP FAIL";
|
||||||
|
case QDF_PROTO_EAP_INITIATE:
|
||||||
|
return "EAP INIT";
|
||||||
|
case QDF_PROTO_EAP_FINISH:
|
||||||
|
return "EAP FINISH";
|
||||||
|
case QDF_PROTO_EAPOL_START:
|
||||||
|
return "START";
|
||||||
|
case QDF_PROTO_EAPOL_LOGOFF:
|
||||||
|
return "LOGOFF";
|
||||||
|
case QDF_PROTO_EAPOL_ASF:
|
||||||
|
return "ASF";
|
||||||
default:
|
default:
|
||||||
return "invalid";
|
return "invalid";
|
||||||
}
|
}
|
||||||
@@ -1519,6 +1537,24 @@ uint8_t *qdf_get_pkt_type_string(uint8_t type, uint8_t subtype)
|
|||||||
return "DNS_Q";
|
return "DNS_Q";
|
||||||
case QDF_PROTO_DNS_RES:
|
case QDF_PROTO_DNS_RES:
|
||||||
return "DNS_RS";
|
return "DNS_RS";
|
||||||
|
case QDF_PROTO_EAP_REQUEST:
|
||||||
|
return "EAP_REQ";
|
||||||
|
case QDF_PROTO_EAP_RESPONSE:
|
||||||
|
return "EAP-RSP";
|
||||||
|
case QDF_PROTO_EAP_SUCCESS:
|
||||||
|
return "EAP-SUCCESS";
|
||||||
|
case QDF_PROTO_EAP_FAILURE:
|
||||||
|
return "EAP-FAIL";
|
||||||
|
case QDF_PROTO_EAP_INITIATE:
|
||||||
|
return "EAP-INIT";
|
||||||
|
case QDF_PROTO_EAP_FINISH:
|
||||||
|
return "EAP-FINISH";
|
||||||
|
case QDF_PROTO_EAPOL_START:
|
||||||
|
return "EAPOL-START";
|
||||||
|
case QDF_PROTO_EAPOL_LOGOFF:
|
||||||
|
return "EAPOL-LOGOFF";
|
||||||
|
case QDF_PROTO_EAPOL_ASF:
|
||||||
|
return "EAPOL-ASF";
|
||||||
default:
|
default:
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case QDF_PROTO_TYPE_EAPOL:
|
case QDF_PROTO_TYPE_EAPOL:
|
||||||
@@ -1775,6 +1811,16 @@ static int qdf_subtype_to_wlan_main_tag(enum qdf_proto_subtype subtype)
|
|||||||
return WLAN_CONN_DIAG_EAPOL_M3_EVENT;
|
return WLAN_CONN_DIAG_EAPOL_M3_EVENT;
|
||||||
case QDF_PROTO_EAPOL_M4:
|
case QDF_PROTO_EAPOL_M4:
|
||||||
return WLAN_CONN_DIAG_EAPOL_M4_EVENT;
|
return WLAN_CONN_DIAG_EAPOL_M4_EVENT;
|
||||||
|
case QDF_PROTO_EAP_REQUEST:
|
||||||
|
return WLAN_CONN_DIAG_EAP_REQ_EVENT;
|
||||||
|
case QDF_PROTO_EAP_RESPONSE:
|
||||||
|
return WLAN_CONN_DIAG_EAP_RESP_EVENT;
|
||||||
|
case QDF_PROTO_EAP_SUCCESS:
|
||||||
|
return WLAN_CONN_DIAG_EAP_SUCC_EVENT;
|
||||||
|
case QDF_PROTO_EAP_FAILURE:
|
||||||
|
return WLAN_CONN_DIAG_EAP_FAIL_EVENT;
|
||||||
|
case QDF_PROTO_EAPOL_START:
|
||||||
|
return WLAN_CONN_DIAG_EAP_START_EVENT;
|
||||||
default:
|
default:
|
||||||
return WLAN_CONN_DIAG_MAX;
|
return WLAN_CONN_DIAG_MAX;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user