qcacmn: Add support to log ICMP packet seq no and ID

Add support to log ICMP seq no and ID in DPTRACE.
Other protcols can use this private proto data to record
there private data accordingly. Currently it is set to 0.
Increase the record entry from 40 bytes to 50 bytes.

Change-Id: Ief5fb26a97408a364af486f3eaec2e108de71d52
CRs-Fixed: 2951916
This commit is contained in:
sandhu
2021-05-14 15:37:27 -07:00
committed by Madan Koyyalamudi
父節點 c515aa874b
當前提交 81272da21e
共有 3 個文件被更改,包括 35 次插入13 次删除

查看文件

@@ -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);
}