summaryrefslogtreecommitdiff
path: root/qdf
diff options
context:
space:
mode:
authorVarsha Mishra <varsham@codeaurora.org>2018-02-07 19:32:08 +0530
committersnandini <snandini@codeaurora.org>2018-02-08 14:13:14 -0800
commitd385dbe43d05260092dbb6fcb70078671333b16a (patch)
tree6efdb6104eddb078959e16978fa04b458050c3f0 /qdf
parente460c52c3fd0151fd31c2025d0340e712cd81197 (diff)
downloadqca-wfi-host-cmn-d385dbe43d05260092dbb6fcb70078671333b16a.tar.gz
qcacmn: Add QDF API to find packet type
Add qdf API to know whether packet is broadcast or not CRs-Fixed: 2125569 Change-Id: If91685ae7b72c6ce52426648e9e01cba92fee86e
Diffstat (limited to 'qdf')
-rw-r--r--qdf/inc/qdf_nbuf.h15
-rw-r--r--qdf/linux/src/i_qdf_nbuf.h1
-rw-r--r--qdf/linux/src/qdf_nbuf.c13
3 files changed, 29 insertions, 0 deletions
diff --git a/qdf/inc/qdf_nbuf.h b/qdf/inc/qdf_nbuf.h
index 80b7beaee..64e1be37e 100644
--- a/qdf/inc/qdf_nbuf.h
+++ b/qdf/inc/qdf_nbuf.h
@@ -2301,6 +2301,21 @@ bool qdf_nbuf_data_is_ipv6_tcp_pkt(uint8_t *data)
}
/**
+ * qdf_nbuf_is_bcast_pkt() - check if it is broadcast packet.
+ * @buf: Network buffer
+ *
+ * This func. checks whether packet is broadcast or not.
+ *
+ * Return: TRUE if it is broadcast packet
+ * FALSE if not
+ */
+static inline
+bool qdf_nbuf_is_bcast_pkt(qdf_nbuf_t buf)
+{
+ return __qdf_nbuf_is_bcast_pkt(buf);
+}
+
+/**
* qdf_invalidate_range() - invalidate virtual address range
* @start: start address of the address range
* @end: end address of the address range
diff --git a/qdf/linux/src/i_qdf_nbuf.h b/qdf/linux/src/i_qdf_nbuf.h
index 585c05b18..a65d645ff 100644
--- a/qdf/linux/src/i_qdf_nbuf.h
+++ b/qdf/linux/src/i_qdf_nbuf.h
@@ -644,6 +644,7 @@ bool __qdf_nbuf_data_is_ipv4_dhcp_pkt(uint8_t *data);
bool __qdf_nbuf_data_is_ipv6_dhcp_pkt(uint8_t *data);
bool __qdf_nbuf_data_is_ipv4_eapol_pkt(uint8_t *data);
bool __qdf_nbuf_data_is_ipv4_arp_pkt(uint8_t *data);
+bool __qdf_nbuf_is_bcast_pkt(__qdf_nbuf_t nbuf);
enum qdf_proto_subtype __qdf_nbuf_data_get_dhcp_subtype(uint8_t *data);
enum qdf_proto_subtype __qdf_nbuf_data_get_eapol_subtype(uint8_t *data);
enum qdf_proto_subtype __qdf_nbuf_data_get_arp_subtype(uint8_t *data);
diff --git a/qdf/linux/src/qdf_nbuf.c b/qdf/linux/src/qdf_nbuf.c
index f9a162745..803ee312e 100644
--- a/qdf/linux/src/qdf_nbuf.c
+++ b/qdf/linux/src/qdf_nbuf.c
@@ -1691,6 +1691,19 @@ bool __qdf_nbuf_data_is_ipv6_tcp_pkt(uint8_t *data)
return false;
}
+/**
+ * __qdf_nbuf_is_bcast_pkt() - is destination address broadcast
+ * @nbuf - sk buff
+ *
+ * Return: true if packet is broadcast
+ * false otherwise
+ */
+bool __qdf_nbuf_is_bcast_pkt(qdf_nbuf_t nbuf)
+{
+ struct ethhdr *eh = (struct ethhdr *)qdf_nbuf_data(nbuf);
+ return qdf_is_macaddr_broadcast((struct qdf_mac_addr *)eh->h_dest);
+}
+
#ifdef MEMORY_DEBUG
#define QDF_NET_BUF_TRACK_MAX_SIZE (1024)