qcacmn: Add infrastructure to log roam events in DPTRACE
Add infrastructure to log all roam related commands and events in DPTRACE. Change-Id: I66773fc23dfeacf3a63688819e099bf44676d95b CRs-Fixed: 1081851
此提交包含在:
@@ -205,12 +205,14 @@ struct mon_rx_status {
|
||||
* @QDF_PROTO_TYPE_EAPOL - EAPOL
|
||||
* @QDF_PROTO_TYPE_ARP - ARP
|
||||
* @QDF_PROTO_TYPE_MGMT - MGMT
|
||||
* QDF_PROTO_TYPE_EVENT - EVENT
|
||||
*/
|
||||
enum qdf_proto_type {
|
||||
QDF_PROTO_TYPE_DHCP,
|
||||
QDF_PROTO_TYPE_EAPOL,
|
||||
QDF_PROTO_TYPE_ARP,
|
||||
QDF_PROTO_TYPE_MGMT,
|
||||
QDF_PROTO_TYPE_EVENT,
|
||||
QDF_PROTO_TYPE_MAX
|
||||
};
|
||||
|
||||
@@ -242,6 +244,9 @@ enum qdf_proto_type {
|
||||
* @QDF_PROTO_MGMT_DISASSOC - disassoc
|
||||
* @QDF_PROTO_MGMT_AUTH - auth
|
||||
* @QDF_PROTO_MGMT_DEAUTH - deauth
|
||||
* QDF_ROAM_SYNCH - roam synch indication from fw
|
||||
* QDF_ROAM_COMPLETE - roam complete cmd to fw
|
||||
* QDF_ROAM_EVENTID - roam eventid from fw
|
||||
*/
|
||||
enum qdf_proto_subtype {
|
||||
QDF_PROTO_INVALID,
|
||||
@@ -271,6 +276,9 @@ enum qdf_proto_subtype {
|
||||
QDF_PROTO_MGMT_DISASSOC,
|
||||
QDF_PROTO_MGMT_AUTH,
|
||||
QDF_PROTO_MGMT_DEAUTH,
|
||||
QDF_ROAM_SYNCH,
|
||||
QDF_ROAM_COMPLETE,
|
||||
QDF_ROAM_EVENTID,
|
||||
QDF_PROTO_SUBTYPE_MAX
|
||||
};
|
||||
|
||||
|
@@ -180,6 +180,7 @@ typedef struct s_qdf_trace_data {
|
||||
* @QDF_DP_TRACE_DHCP_PACKET_RECORD - record DHCP packet
|
||||
* @QDF_DP_TRACE_ARP_PACKET_RECORD - record ARP packet
|
||||
* @QDF_DP_TRACE_MGMT_PACKET_RECORD - record MGMT pacekt
|
||||
* QDF_DP_TRACE_EVENT_RECORD - record events
|
||||
* @QDF_DP_TRACE_DEFAULT_VERBOSITY - below this are part of default verbosity
|
||||
* @QDF_DP_TRACE_HDD_TX_TIMEOUT - HDD tx timeout
|
||||
* @QDF_DP_TRACE_HDD_SOFTAP_TX_TIMEOUT- SOFTAP HDD tx timeout
|
||||
@@ -209,6 +210,7 @@ enum QDF_DP_TRACE_ID {
|
||||
QDF_DP_TRACE_DHCP_PACKET_RECORD,
|
||||
QDF_DP_TRACE_ARP_PACKET_RECORD,
|
||||
QDF_DP_TRACE_MGMT_PACKET_RECORD,
|
||||
QDF_DP_TRACE_EVENT_RECORD,
|
||||
QDF_DP_TRACE_DEFAULT_VERBOSITY,
|
||||
QDF_DP_TRACE_HDD_TX_TIMEOUT,
|
||||
QDF_DP_TRACE_HDD_SOFTAP_TX_TIMEOUT,
|
||||
@@ -287,6 +289,18 @@ struct qdf_dp_trace_mgmt_buf {
|
||||
uint8_t subtype;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct qdf_dp_trace_event_buf - event buffer
|
||||
* @vdev_id : vdev id
|
||||
* @type: packet type
|
||||
* @subtype: packet subtype
|
||||
*/
|
||||
struct qdf_dp_trace_event_buf {
|
||||
uint8_t vdev_id;
|
||||
uint8_t type;
|
||||
uint8_t subtype;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct qdf_dp_trace_record_s - Describes a record in DP trace
|
||||
* @time: time when it got stored
|
||||
@@ -410,6 +424,10 @@ void qdf_dp_trace_mgmt_pkt(enum QDF_DP_TRACE_ID code, uint8_t vdev_id,
|
||||
enum qdf_proto_type type, enum qdf_proto_subtype subtype);
|
||||
void qdf_dp_display_mgmt_pkt(struct qdf_dp_trace_record_s *record,
|
||||
uint16_t index);
|
||||
void qdf_dp_display_event_record(struct qdf_dp_trace_record_s *record,
|
||||
uint16_t index);
|
||||
void qdf_dp_trace_record_event(enum QDF_DP_TRACE_ID code, uint8_t vdev_id,
|
||||
enum qdf_proto_type type, enum qdf_proto_subtype subtype);
|
||||
#else
|
||||
static inline
|
||||
void qdf_dp_trace_log_pkt(uint8_t session_id, struct sk_buff *skb,
|
||||
|
@@ -821,6 +821,8 @@ void qdf_dp_trace_init(void)
|
||||
qdf_dp_display_proto_pkt;
|
||||
qdf_dp_trace_cb_table[QDF_DP_TRACE_MGMT_PACKET_RECORD] =
|
||||
qdf_dp_display_mgmt_pkt;
|
||||
qdf_dp_trace_cb_table[QDF_DP_TRACE_EVENT_RECORD] =
|
||||
qdf_dp_display_event_record;
|
||||
|
||||
qdf_dp_trace_cb_table[QDF_DP_TRACE_MAX] = qdf_dp_unused;
|
||||
}
|
||||
@@ -967,6 +969,8 @@ const char *qdf_dp_code_to_string(enum QDF_DP_TRACE_ID code)
|
||||
return "ARP:";
|
||||
case QDF_DP_TRACE_MGMT_PACKET_RECORD:
|
||||
return "MGMT:";
|
||||
case QDF_DP_TRACE_EVENT_RECORD:
|
||||
return "EVENT:";
|
||||
case QDF_DP_TRACE_HDD_TX_PACKET_PTR_RECORD:
|
||||
return "HDD: TX: PTR:";
|
||||
case QDF_DP_TRACE_HDD_TX_PACKET_RECORD:
|
||||
@@ -1041,6 +1045,8 @@ static const char *qdf_dp_type_to_str(enum qdf_proto_type type)
|
||||
return "ARP";
|
||||
case QDF_PROTO_TYPE_MGMT:
|
||||
return "MGMT";
|
||||
case QDF_PROTO_TYPE_EVENT:
|
||||
return "EVENT";
|
||||
default:
|
||||
return "invalid";
|
||||
}
|
||||
@@ -1091,6 +1097,12 @@ static const char *qdf_dp_subtype_to_str(enum qdf_proto_subtype subtype)
|
||||
return "AUTH";
|
||||
case QDF_PROTO_MGMT_DEAUTH:
|
||||
return "DEAUTH";
|
||||
case QDF_ROAM_SYNCH:
|
||||
return "ROAM SYNCH";
|
||||
case QDF_ROAM_COMPLETE:
|
||||
return "ROAM COMPLETE";
|
||||
case QDF_ROAM_EVENTID:
|
||||
return "ROAM EVENTID";
|
||||
default:
|
||||
return "invalid";
|
||||
}
|
||||
@@ -1353,6 +1365,54 @@ void qdf_dp_trace_mgmt_pkt(enum QDF_DP_TRACE_ID code, uint8_t vdev_id,
|
||||
}
|
||||
EXPORT_SYMBOL(qdf_dp_trace_mgmt_pkt);
|
||||
|
||||
/**
|
||||
* qdf_dp_display_event_record() - display event records
|
||||
* @record: dptrace record
|
||||
* @index: index
|
||||
*
|
||||
* Return: none
|
||||
*/
|
||||
void qdf_dp_display_event_record(struct qdf_dp_trace_record_s *record,
|
||||
uint16_t index)
|
||||
{
|
||||
struct qdf_dp_trace_event_buf *buf =
|
||||
(struct qdf_dp_trace_event_buf *)record->data;
|
||||
|
||||
qdf_print("DPT: %04d: %012llu: %s vdev_id %d", index,
|
||||
record->time, qdf_dp_code_to_string(record->code),
|
||||
buf->vdev_id);
|
||||
qdf_print("DPT: Type %s Subtype %s", qdf_dp_type_to_str(buf->type),
|
||||
qdf_dp_subtype_to_str(buf->subtype));
|
||||
}
|
||||
EXPORT_SYMBOL(qdf_dp_display_event_record);
|
||||
|
||||
/**
|
||||
* qdf_dp_trace_record_event() - record events
|
||||
* @code: dptrace code
|
||||
* @vdev_id: vdev id
|
||||
* @type: proto type
|
||||
* @subtype: proto subtype
|
||||
*
|
||||
* Return: none
|
||||
*/
|
||||
void qdf_dp_trace_record_event(enum QDF_DP_TRACE_ID code, uint8_t vdev_id,
|
||||
enum qdf_proto_type type, enum qdf_proto_subtype subtype)
|
||||
{
|
||||
struct qdf_dp_trace_event_buf buf;
|
||||
int buf_size = sizeof(struct qdf_dp_trace_event_buf);
|
||||
|
||||
if (qdf_dp_enable_check(NULL, code, QDF_NA) == false)
|
||||
return;
|
||||
|
||||
if (buf_size > QDF_DP_TRACE_RECORD_SIZE)
|
||||
QDF_BUG(0);
|
||||
|
||||
buf.type = type;
|
||||
buf.subtype = subtype;
|
||||
buf.vdev_id = vdev_id;
|
||||
qdf_dp_add_record(code, (uint8_t *)&buf, buf_size, true);
|
||||
}
|
||||
EXPORT_SYMBOL(qdf_dp_trace_record_event);
|
||||
|
||||
/**
|
||||
* qdf_dp_display_proto_pkt() - display proto packet
|
||||
|
新增問題並參考
封鎖使用者