qcacmn: Log EAP 8-way handshake packets properly

Currently EAP 8-way handshake packets are logged as
EAP REQ and EAP RSP.
Fix the logging issue by logging EAP 8-way handshake
packets properly

Change-Id: I6af3b3140b5881ece58dd06a9725c103c9388b4c
CRs-Fixed: 3400396
This commit is contained in:
Amit Mehta
2023-01-20 10:19:07 +05:30
committed by Madan Koyyalamudi
parent 5ef54a9f8a
commit f9f4ba1b9d
4 changed files with 223 additions and 11 deletions

View File

@@ -1560,6 +1560,102 @@ __qdf_nbuf_data_get_eapol_key(uint8_t *data)
return subtype;
}
/**
* __qdf_nbuf_data_get_exp_msg_type() - Get EAP expanded msg type
* @data: Pointer to EAPOL packet data buffer
* @code: EAP code
*
* Return: subtype of the EAPOL packet.
*/
static inline enum qdf_proto_subtype
__qdf_nbuf_data_get_exp_msg_type(uint8_t *data, uint8_t code)
{
uint8_t msg_type;
uint8_t opcode = *(data + EAP_EXP_MSG_OPCODE_OFFSET);
switch (opcode) {
case WSC_START:
return QDF_PROTO_EAP_WSC_START;
case WSC_ACK:
return QDF_PROTO_EAP_WSC_ACK;
case WSC_NACK:
return QDF_PROTO_EAP_WSC_NACK;
case WSC_MSG:
msg_type = *(data + EAP_EXP_MSG_TYPE_OFFSET);
switch (msg_type) {
case EAP_EXP_TYPE_M1:
return QDF_PROTO_EAP_M1;
case EAP_EXP_TYPE_M2:
return QDF_PROTO_EAP_M2;
case EAP_EXP_TYPE_M3:
return QDF_PROTO_EAP_M3;
case EAP_EXP_TYPE_M4:
return QDF_PROTO_EAP_M4;
case EAP_EXP_TYPE_M5:
return QDF_PROTO_EAP_M5;
case EAP_EXP_TYPE_M6:
return QDF_PROTO_EAP_M6;
case EAP_EXP_TYPE_M7:
return QDF_PROTO_EAP_M7;
case EAP_EXP_TYPE_M8:
return QDF_PROTO_EAP_M8;
default:
break;
}
break;
case WSC_DONE:
return QDF_PROTO_EAP_WSC_DONE;
case WSC_FRAG_ACK:
return QDF_PROTO_EAP_WSC_FRAG_ACK;
default:
break;
}
switch (code) {
case QDF_EAP_REQUEST:
return QDF_PROTO_EAP_REQUEST;
case QDF_EAP_RESPONSE:
return QDF_PROTO_EAP_RESPONSE;
default:
return QDF_PROTO_INVALID;
}
}
/**
* __qdf_nbuf_data_get_eap_type() - Get EAP type
* @data: Pointer to EAPOL packet data buffer
* @code: EAP code
*
* Return: subtype of the EAPOL packet.
*/
static inline enum qdf_proto_subtype
__qdf_nbuf_data_get_eap_type(uint8_t *data, uint8_t code)
{
uint8_t type = *(data + EAP_TYPE_OFFSET);
switch (type) {
case EAP_PACKET_TYPE_EXP:
return __qdf_nbuf_data_get_exp_msg_type(data, code);
case EAP_PACKET_TYPE_ID:
switch (code) {
case QDF_EAP_REQUEST:
return QDF_PROTO_EAP_REQ_ID;
case QDF_EAP_RESPONSE:
return QDF_PROTO_EAP_RSP_ID;
default:
return QDF_PROTO_INVALID;
}
default:
switch (code) {
case QDF_EAP_REQUEST:
return QDF_PROTO_EAP_REQUEST;
case QDF_EAP_RESPONSE:
return QDF_PROTO_EAP_RESPONSE;
default:
return QDF_PROTO_INVALID;
}
}
}
/**
* __qdf_nbuf_data_get_eap_code() - Get EAPOL code
* @data: Pointer to EAPOL packet data buffer
@@ -1573,9 +1669,8 @@ __qdf_nbuf_data_get_eap_code(uint8_t *data)
switch (code) {
case QDF_EAP_REQUEST:
return QDF_PROTO_EAP_REQUEST;
case QDF_EAP_RESPONSE:
return QDF_PROTO_EAP_RESPONSE;
return __qdf_nbuf_data_get_eap_type(data, code);
case QDF_EAP_SUCCESS:
return QDF_PROTO_EAP_SUCCESS;
case QDF_EAP_FAILURE: