|
@@ -1631,7 +1631,7 @@ static bool qdf_log_icmpv6_pkt(uint8_t vdev_id, struct sk_buff *skb,
|
|
|
QDF_DP_TRACE_ICMPv6_PACKET_RECORD,
|
|
|
vdev_id, (skb->data + QDF_NBUF_SRC_MAC_OFFSET),
|
|
|
(skb->data + QDF_NBUF_DEST_MAC_OFFSET),
|
|
|
- QDF_PROTO_TYPE_ICMPv6, subtype, dir, pdev_id, false));
|
|
|
+ QDF_PROTO_TYPE_ICMPv6, subtype, dir, pdev_id, false, 0));
|
|
|
|
|
|
switch (subtype) {
|
|
|
case QDF_PROTO_ICMPV6_REQ:
|
|
@@ -1674,6 +1674,10 @@ static bool qdf_log_icmp_pkt(uint8_t vdev_id, struct sk_buff *skb,
|
|
|
enum qdf_proto_dir dir, uint8_t pdev_id)
|
|
|
{
|
|
|
enum qdf_proto_subtype proto_subtype;
|
|
|
+ uint8_t *data = NULL;
|
|
|
+ uint16_t seq_num = 0;
|
|
|
+ uint16_t icmp_id = 0;
|
|
|
+ uint32_t proto_priv_data = 0;
|
|
|
|
|
|
if ((qdf_dp_get_proto_bitmap() & QDF_NBUF_PKT_TRAC_TYPE_ICMP) &&
|
|
|
(qdf_nbuf_is_icmp_pkt(skb) == true)) {
|
|
@@ -1681,6 +1685,13 @@ static bool qdf_log_icmp_pkt(uint8_t vdev_id, struct sk_buff *skb,
|
|
|
QDF_NBUF_CB_DP_TRACE_PRINT(skb) = false;
|
|
|
proto_subtype = qdf_nbuf_get_icmp_subtype(skb);
|
|
|
|
|
|
+ data = qdf_nbuf_data(skb);
|
|
|
+ icmp_id = qdf_cpu_to_be16(*(uint16_t *)(data + ICMP_ID_OFFSET));
|
|
|
+ seq_num = qdf_cpu_to_be16(*(uint16_t *)(data + ICMP_SEQ_NUM_OFFSET));
|
|
|
+
|
|
|
+ proto_priv_data |= ((proto_priv_data | ((uint32_t)icmp_id)) << 16);
|
|
|
+ proto_priv_data |= (uint32_t)seq_num;
|
|
|
+
|
|
|
if (QDF_TX == dir)
|
|
|
QDF_NBUF_CB_TX_DP_TRACE(skb) = 1;
|
|
|
else if (QDF_RX == dir)
|
|
@@ -1694,7 +1705,7 @@ static bool qdf_log_icmp_pkt(uint8_t vdev_id, struct sk_buff *skb,
|
|
|
QDF_NBUF_DEST_MAC_OFFSET,
|
|
|
QDF_PROTO_TYPE_ICMP,
|
|
|
proto_subtype, dir, pdev_id,
|
|
|
- false));
|
|
|
+ false, proto_priv_data));
|
|
|
|
|
|
if (proto_subtype == QDF_PROTO_ICMP_REQ)
|
|
|
g_qdf_dp_trace_data.icmp_req++;
|
|
@@ -1757,7 +1768,7 @@ static bool qdf_log_eapol_pkt(uint8_t vdev_id, struct sk_buff *skb,
|
|
|
skb->data +
|
|
|
QDF_NBUF_DEST_MAC_OFFSET,
|
|
|
QDF_PROTO_TYPE_EAPOL, subtype,
|
|
|
- dir, pdev_id, true));
|
|
|
+ dir, pdev_id, true, 0));
|
|
|
|
|
|
switch (subtype) {
|
|
|
case QDF_PROTO_EAPOL_M1:
|
|
@@ -1832,7 +1843,7 @@ static bool qdf_log_dhcp_pkt(uint8_t vdev_id, struct sk_buff *skb,
|
|
|
skb->data +
|
|
|
QDF_NBUF_DEST_MAC_OFFSET,
|
|
|
QDF_PROTO_TYPE_DHCP, subtype,
|
|
|
- dir, pdev_id, true));
|
|
|
+ dir, pdev_id, true, 0));
|
|
|
|
|
|
switch (subtype) {
|
|
|
case QDF_PROTO_DHCP_DISCOVER:
|
|
@@ -1893,7 +1904,7 @@ static bool qdf_log_arp_pkt(uint8_t vdev_id, struct sk_buff *skb,
|
|
|
QDF_NBUF_DEST_MAC_OFFSET,
|
|
|
QDF_PROTO_TYPE_ARP,
|
|
|
proto_subtype, dir, pdev_id,
|
|
|
- true));
|
|
|
+ true, 0));
|
|
|
|
|
|
if (QDF_PROTO_ARP_REQ == proto_subtype)
|
|
|
g_qdf_dp_trace_data.arp_req++;
|
|
@@ -2115,24 +2126,25 @@ void qdf_dp_display_proto_pkt(struct qdf_dp_trace_record_s *record,
|
|
|
loc = qdf_dp_trace_fill_meta_str(prepend_str, sizeof(prepend_str),
|
|
|
index, info, record);
|
|
|
DPTRACE_PRINT("%s [%d] [%s] SA: "
|
|
|
- QDF_MAC_ADDR_FMT " %s DA: "
|
|
|
- QDF_MAC_ADDR_FMT,
|
|
|
+ QDF_MAC_ADDR_FMT " %s DA:"
|
|
|
+ QDF_MAC_ADDR_FMT " proto priv data = %08x",
|
|
|
prepend_str,
|
|
|
buf->vdev_id,
|
|
|
qdf_dp_subtype_to_str(buf->subtype),
|
|
|
QDF_MAC_ADDR_REF(buf->sa.bytes),
|
|
|
qdf_dp_dir_to_str(buf->dir),
|
|
|
- QDF_MAC_ADDR_REF(buf->da.bytes));
|
|
|
+ QDF_MAC_ADDR_REF(buf->da.bytes),
|
|
|
+ buf->proto_priv_data);
|
|
|
}
|
|
|
qdf_export_symbol(qdf_dp_display_proto_pkt);
|
|
|
|
|
|
void qdf_dp_trace_proto_pkt(enum QDF_DP_TRACE_ID code, uint8_t vdev_id,
|
|
|
uint8_t *sa, uint8_t *da, enum qdf_proto_type type,
|
|
|
enum qdf_proto_subtype subtype, enum qdf_proto_dir dir,
|
|
|
- uint8_t pdev_id, bool print)
|
|
|
+ uint8_t pdev_id, bool print, uint32_t proto_priv_data)
|
|
|
{
|
|
|
struct qdf_dp_trace_proto_buf buf;
|
|
|
- int buf_size = sizeof(struct qdf_dp_trace_ptr_buf);
|
|
|
+ int buf_size = sizeof(struct qdf_dp_trace_proto_buf);
|
|
|
|
|
|
if (qdf_dp_enable_check(NULL, code, dir) == false)
|
|
|
return;
|
|
@@ -2146,6 +2158,7 @@ void qdf_dp_trace_proto_pkt(enum QDF_DP_TRACE_ID code, uint8_t vdev_id,
|
|
|
buf.type = type;
|
|
|
buf.subtype = subtype;
|
|
|
buf.vdev_id = vdev_id;
|
|
|
+ buf.proto_priv_data = proto_priv_data;
|
|
|
qdf_dp_add_record(code, pdev_id,
|
|
|
(uint8_t *)&buf, buf_size, NULL, 0, print);
|
|
|
}
|