qcacmn: Log additional EAPOL packets

Add changes to log additional EAPOL packet types.

Change-Id: I02f1de89f7e0fcf68cea20208df1ed153126852d
CRs-Fixed: 3370979
This commit is contained in:
Amit Mehta
2022-12-22 04:20:25 -08:00
committed by Madan Koyyalamudi
parent 213581ab0b
commit 7e50aa48ab
4 changed files with 128 additions and 7 deletions

View File

@@ -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 */
/**
* __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
*
* This func. returns the subtype of EAPOL packet.
*
* 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:
*
@@ -1531,8 +1529,8 @@ __qdf_nbuf_data_get_dhcp_subtype(uint8_t *data)
*
* Return: subtype of the EAPOL packet.
*/
enum qdf_proto_subtype
__qdf_nbuf_data_get_eapol_subtype(uint8_t *data)
static inline enum qdf_proto_subtype
__qdf_nbuf_data_get_eapol_key(uint8_t *data)
{
uint16_t key_info, key_data_length;
enum qdf_proto_subtype subtype;
@@ -1561,6 +1559,64 @@ __qdf_nbuf_data_get_eapol_subtype(uint8_t *data)
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);
/**