@@ -30,6 +30,11 @@ typedef _odp_abi_packet_seg_t *odp_packet_seg_t;
#define ODP_PACKET_SEG_INVALID ((odp_packet_seg_t)0xffffffff)
#define ODP_PACKET_OFFSET_INVALID 0xffff
+typedef uint8_t odp_proto_l2_type_t;
+
+#define ODP_PROTO_L2_TYPE_NONE 0
+#define ODP_PROTO_L2_TYPE_ETH 1
+
typedef uint8_t odp_proto_l3_type_t;
#define ODP_PROTO_L3_TYPE_NONE 0
@@ -71,6 +71,19 @@ extern "C" {
* Packet is red
*/
+/**
+ * @typedef odp_proto_l2_type_t
+ * Layer 2 protocol type
+ */
+
+/**
+ * @def ODP_PROTO_L2_TYPE_NONE
+ * Layer 2 protocol type not defined
+ *
+ * @def ODP_PROTO_L2_TYPE_ETH
+ * Layer 2 protocol is Ethernet
+ */
+
/**
* @typedef odp_proto_l3_type_t
* Layer 3 protocol type
@@ -1615,6 +1628,17 @@ uint32_t odp_packet_l4_offset(odp_packet_t pkt);
*/
int odp_packet_l4_offset_set(odp_packet_t pkt, uint32_t offset);
+/**
+ * Layer 2 protocol type
+ *
+ * Returns layer 2 protocol type. Initial type value is ODP_PROTO_L3_TYPE_NONE.
+ *
+ * @param pkt Packet handle
+ *
+ * @return Layer 2 protocol type
+ */
+odp_proto_l2_type_t odp_packet_l2_type(odp_packet_t pkt);
+
/**
* Layer 3 protocol type
*