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:

committed by
Madan Koyyalamudi

parent
5ef54a9f8a
commit
f9f4ba1b9d
@@ -130,6 +130,33 @@
|
||||
#define QDF_EAP_INITIATE 5
|
||||
#define QDF_EAP_FINISH 6
|
||||
|
||||
#define EAP_PACKET_TYPE_ID 0x01
|
||||
#define EAP_PACKET_TYPE_EXP 0xFE
|
||||
|
||||
#define EAP_EXP_TYPE_WSC_START 0x01
|
||||
#define EAP_EXP_TYPE_M1 0x04
|
||||
#define EAP_EXP_TYPE_M2 0x05
|
||||
#define EAP_EXP_TYPE_M3 0x07
|
||||
#define EAP_EXP_TYPE_M4 0x08
|
||||
#define EAP_EXP_TYPE_M5 0x09
|
||||
#define EAP_EXP_TYPE_M6 0x0A
|
||||
#define EAP_EXP_TYPE_M7 0x0B
|
||||
#define EAP_EXP_TYPE_M8 0x0C
|
||||
#define EAP_EXP_TYPE_WSC_DONE 0x0F
|
||||
|
||||
#define EAP_EXP_MSG_OPCODE_OFFSET 0x1E
|
||||
#define EAP_EXP_MSG_TYPE_OFFSET 0x29
|
||||
|
||||
enum wsc_op_code {
|
||||
WSC_UPNP = 0, /* No OP Code in UPnP transport */
|
||||
WSC_START = 0x01,
|
||||
WSC_ACK = 0x02,
|
||||
WSC_NACK = 0x03,
|
||||
WSC_MSG = 0x04,
|
||||
WSC_DONE = 0x05,
|
||||
WSC_FRAG_ACK = 0x06
|
||||
};
|
||||
|
||||
/* ARP Related MASK */
|
||||
#define QDF_NBUF_PKT_ARP_OPCODE_OFFSET 20
|
||||
#define QDF_NBUF_PKT_ARPOP_REQ 1
|
||||
|
@@ -1042,15 +1042,30 @@ struct qdf_mac_addr {
|
||||
* @QDF_ROAM_EVENTID: roam eventid from fw
|
||||
* @QDF_PROTO_DNS_QUERY: dns query
|
||||
* @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_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_EAP_REQ_ID: EAP identify request
|
||||
* @QDF_PROTO_EAP_RSP_ID: EAP identify response
|
||||
* @QDF_PROTO_EAP_M1: EAP expanded type M1
|
||||
* @QDF_PROTO_EAP_M2: EAP expanded type M2
|
||||
* @QDF_PROTO_EAP_M3: EAP expanded type M3
|
||||
* @QDF_PROTO_EAP_M4: EAP expanded type M4
|
||||
* @QDF_PROTO_EAP_M5: EAP expanded type M5
|
||||
* @QDF_PROTO_EAP_M6: EAP expanded type M6
|
||||
* @QDF_PROTO_EAP_M7: EAP expanded type M7
|
||||
* @QDF_PROTO_EAP_M8: EAP expanded type M8
|
||||
* @QDF_PROTO_EAP_WSC_START: EAP expanded type WSC start
|
||||
* @QDF_PROTO_EAP_WSC_ACK: EAP expanded type WSC ACK
|
||||
* @QDF_PROTO_EAP_WSC_NACK: EAP expanded type WSC NACK
|
||||
* @QDF_PROTO_EAP_WSC_DONE: EAP expanded type WSC DONE
|
||||
* @QDF_PROTO_EAP_WSC_FRAG_ACK: EAP expanded type WSC frag ACK
|
||||
* @QDF_PROTO_SUBTYPE_MAX: subtype max
|
||||
*/
|
||||
enum qdf_proto_subtype {
|
||||
@@ -1099,6 +1114,21 @@ enum qdf_proto_subtype {
|
||||
QDF_PROTO_EAPOL_START,
|
||||
QDF_PROTO_EAPOL_LOGOFF,
|
||||
QDF_PROTO_EAPOL_ASF,
|
||||
QDF_PROTO_EAP_REQ_ID,
|
||||
QDF_PROTO_EAP_RSP_ID,
|
||||
QDF_PROTO_EAP_M1,
|
||||
QDF_PROTO_EAP_M2,
|
||||
QDF_PROTO_EAP_M3,
|
||||
QDF_PROTO_EAP_M4,
|
||||
QDF_PROTO_EAP_M5,
|
||||
QDF_PROTO_EAP_M6,
|
||||
QDF_PROTO_EAP_M7,
|
||||
QDF_PROTO_EAP_M8,
|
||||
QDF_PROTO_EAP_WSC_START,
|
||||
QDF_PROTO_EAP_WSC_ACK,
|
||||
QDF_PROTO_EAP_WSC_NACK,
|
||||
QDF_PROTO_EAP_WSC_DONE,
|
||||
QDF_PROTO_EAP_WSC_FRAG_ACK,
|
||||
QDF_PROTO_SUBTYPE_MAX
|
||||
};
|
||||
|
||||
|
@@ -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:
|
||||
|
@@ -1255,6 +1255,36 @@ static const char *qdf_dp_subtype_to_str(enum qdf_proto_subtype subtype)
|
||||
return "LOGOFF";
|
||||
case QDF_PROTO_EAPOL_ASF:
|
||||
return "ASF";
|
||||
case QDF_PROTO_EAP_REQ_ID:
|
||||
return "EAP REQ ID";
|
||||
case QDF_PROTO_EAP_RSP_ID:
|
||||
return "EAP RSP ID";
|
||||
case QDF_PROTO_EAP_M1:
|
||||
return "EAP M1";
|
||||
case QDF_PROTO_EAP_M2:
|
||||
return "EAP M2";
|
||||
case QDF_PROTO_EAP_M3:
|
||||
return "EAP M3";
|
||||
case QDF_PROTO_EAP_M4:
|
||||
return "EAP M4";
|
||||
case QDF_PROTO_EAP_M5:
|
||||
return "EAP M5";
|
||||
case QDF_PROTO_EAP_M6:
|
||||
return "EAP M6";
|
||||
case QDF_PROTO_EAP_M7:
|
||||
return "EAP M7";
|
||||
case QDF_PROTO_EAP_M8:
|
||||
return "EAP M8";
|
||||
case QDF_PROTO_EAP_WSC_START:
|
||||
return "EAP WSC START";
|
||||
case QDF_PROTO_EAP_WSC_DONE:
|
||||
return "EAP WSC DONE";
|
||||
case QDF_PROTO_EAP_WSC_ACK:
|
||||
return "EAP WSC ACK";
|
||||
case QDF_PROTO_EAP_WSC_NACK:
|
||||
return "EAP WSC NACK";
|
||||
case QDF_PROTO_EAP_WSC_FRAG_ACK:
|
||||
return "EAP WSC FRAG ACK";
|
||||
default:
|
||||
return "invalid";
|
||||
}
|
||||
@@ -1555,6 +1585,36 @@ uint8_t *qdf_get_pkt_type_string(uint8_t type, uint8_t subtype)
|
||||
return "EAPOL-LOGOFF";
|
||||
case QDF_PROTO_EAPOL_ASF:
|
||||
return "EAPOL-ASF";
|
||||
case QDF_PROTO_EAP_REQ_ID:
|
||||
return "EAP-REQ-ID";
|
||||
case QDF_PROTO_EAP_RSP_ID:
|
||||
return "EAP-RSP-ID";
|
||||
case QDF_PROTO_EAP_M1:
|
||||
return "EAP-M1";
|
||||
case QDF_PROTO_EAP_M2:
|
||||
return "EAP-M2";
|
||||
case QDF_PROTO_EAP_M3:
|
||||
return "EAP-M3";
|
||||
case QDF_PROTO_EAP_M4:
|
||||
return "EAP-M4";
|
||||
case QDF_PROTO_EAP_M5:
|
||||
return "EAP-M5";
|
||||
case QDF_PROTO_EAP_M6:
|
||||
return "EAP-M6";
|
||||
case QDF_PROTO_EAP_M7:
|
||||
return "EAP-M7";
|
||||
case QDF_PROTO_EAP_M8:
|
||||
return "EAP-M8";
|
||||
case QDF_PROTO_EAP_WSC_START:
|
||||
return "EAP-WSC-START";
|
||||
case QDF_PROTO_EAP_WSC_DONE:
|
||||
return "EAP-WSC-DONE";
|
||||
case QDF_PROTO_EAP_WSC_ACK:
|
||||
return "EAP-WSC-ACK";
|
||||
case QDF_PROTO_EAP_WSC_NACK:
|
||||
return "EAP-WSC-NACK";
|
||||
case QDF_PROTO_EAP_WSC_FRAG_ACK:
|
||||
return "EAP-WSC-FRAG-ACK";
|
||||
default:
|
||||
switch (type) {
|
||||
case QDF_PROTO_TYPE_EAPOL:
|
||||
|
Reference in New Issue
Block a user