Merge "[qca-nss-drv]  MEC support for NSS offload radio"
diff --git a/exports/nss_wifi_vdev.h b/exports/nss_wifi_vdev.h
index b62d850..763ceb3 100644
--- a/exports/nss_wifi_vdev.h
+++ b/exports/nss_wifi_vdev.h
@@ -508,13 +508,25 @@
 };
 
 /**
+ * nss_wifi_vdev_wds_info_type
+ *	Specifies the type of WDS notification information.
+ */
+enum wifi_vdev_ext_wds_info_type {
+	NSS_WIFI_VDEV_WDS_TYPE_NONE = 0,
+	NSS_WIFI_VDEV_WDS_TYPE_RX,	/**< Rx WDS entry. */
+	NSS_WIFI_VDEV_WDS_TYPE_MEC	/**< Multicast Tx WDS entry. */
+};
+
+/**
  * nss_wifi_vdev_per_packet_metadata
  *	Payload of per-packet metadata.
  */
 struct nss_wifi_vdev_wds_per_packet_metadata {
-	uint16_t peer_id;	/**< peer id */
-	uint8_t is_sa_valid;	/**< is source address valid */
-	uint8_t reserved;	/**< reserve for alignment */
+	uint16_t peer_id;	/**< Peer ID. */
+	uint8_t is_sa_valid;	/**< Specifies whether source address is valid. */
+	uint8_t reserved;	/**< Reserve bytes for alignment. */
+	enum wifi_vdev_ext_wds_info_type wds_type;
+						/**< WDS message type. */
 };
 
 /**
diff --git a/exports/nss_wifili_if.h b/exports/nss_wifili_if.h
index 331f84e..6705687 100644
--- a/exports/nss_wifili_if.h
+++ b/exports/nss_wifili_if.h
@@ -59,6 +59,8 @@
 				/**< Maximum supported reception types. */
 #define NSS_WIFILI_SOC_PER_PACKET_METADATA_SIZE 60
 				/**< Metadata area total size. */
+#define NSS_WIFILI_MEC_PEER_ID 0xDEAD
+				/**< MEC (Multicast echo check) peer ID. */
 
 /**
  * nss_wifili_wme_stream_classes
@@ -103,6 +105,9 @@
 	NSS_WIFILI_STATS_MSG,
 	NSS_WIFILI_WDS_VENDOR_MSG,
 	NSS_WIFILI_PEER_STATS_MSG,
+	NSS_WIFILI_WDS_PEER_ADD_MSG,
+	NSS_WIFILI_WDS_PEER_DEL_MSG,
+	NSS_WIFILI_WDS_PEER_MAP_MSG,
 	NSS_WIFILI_MAX_MSG
 };
 
@@ -176,7 +181,7 @@
 	NSS_WIFILI_EMSG_HAL_RXEXCP_SRNG_ALLOC_FAIL,
 			/**< Rx exception srng ring allocation failure. */
 	NSS_WIFILI_EMSG_HAL_TX_MEMALLOC_FAIL,
-			/**< Tx hal (hardware Abstraction Layer) srng ring allocation failure. */
+			/**< Tx HAL (hardware abstraction layer) srng ring allocation failure. */
 	NSS_WIFILI_EMSG_HAL_TX_INVLID_POOL_NUM_FAIL,
 			/**< Invalid pool number in initialization message. */
 	NSS_WIFILI_EMSG_HAL_TX_INVALID_PAGE_NUM_FAIL,
@@ -185,6 +190,36 @@
 			/**< Tx descriptor memory allocation failure. */
 	NSS_WIFILI_EMSG_HAL_RX_MEMALLOC_FAIL,
 			/**< Rx memory allocation failure. */
+	NSS_WIFILI_EMSG_PDEV_RXDMA_RING_ALLOC_FAIL,
+			/**< Rx DMA ring allocation failed. */
+	NSS_WIFILI_EMSG_NAWDSEN_PEERID_INVALID,
+			/**< Peer NAWDS enable failure due to invalid peer ID. */
+	NSS_WIFILI_EMSG_NAWDSEN_PEER_NULL,
+			/**< Peer NAWDS enable failure due to peer being null. */
+	NSS_WIFILI_EMSG_NAWDSEN_PEER_CORRUPTED,
+			/**< Peer NAWDS enable failure due to corrupted peer. */
+	NSS_WIFILI_EMSG_WDS_PEER_CFG_FAIL,
+			/**< WDS peer configuration failure. */
+	NSS_WIFILI_EMSG_RESET_NO_STOP,
+			/**< Reset issued without stopping the device. */
+	NSS_WIFILI_EMSG_HAL_SRNG_INVALID_RING_BASE_FAIL,
+			/**< Ring base address is invalid. */
+	NSS_WIFILI_EMSG_PDEV_RX_INIT_FAIL,
+			/**< Pdev Rx initialization failure. */
+	NSS_WIFILI_EMESG_AST_ADD_FAIL,
+			/**< AST entry addition failure for connected peer. */
+	NSS_WIFILI_EMESG_AST_REMOVE_FAIL,
+			/**< AST entry removal failure for connected peer. */
+	NSS_WIFILI_EMESG_WDS_ADD_FAIL,
+			/**< WDS peer AST entry addition failure. */
+	NSS_WIFILI_EMESG_WDS_REMOVE_FAIL,
+			/**< WDS peer AST entry removal failure. */
+	NSS_WIFILI_EMESG_WDS_MAP_FAIL,
+			/**< WDS peer AST entry hardware index mapping failure. */
+	NSS_WIFILI_EMSG_WDS_INVALID_PEERID_FAIL,
+			 /**< Invalid peer id passed in WDS messages. */
+	NSS_WIFILI_EMSG_WDS_DUPLICATE_AST_INDEX_PEER_ID_FAIL,
+		/**< AST entry index is already filled. */
 	NSS_WIFILI_EMSG_UNKNOWN
 			/**< Unknown error message. */
 };
@@ -658,6 +693,25 @@
 			/**< Wifili peer statistics. */
 };
 
+/**
+ * nss_wifili_wds_peer_msg
+ *	Wi-Fi Wireless distribution system(WDS) peer-specific message.
+ */
+struct nss_wifili_wds_peer_msg {
+	uint8_t dest_mac[ETH_ALEN];	/**< MAC address of the destination. */
+	uint8_t peer_mac[ETH_ALEN];	/**< MAC address of the base peer. */
+};
+
+/**
+ * nss_wifili_wds_peer_map_msg
+ *	Wi-Fi Wireless distribution system(WDS) peer-specific message.
+ */
+struct nss_wifili_wds_peer_map_msg {
+	uint8_t dest_mac[ETH_ALEN];	/**< MAC address of the destination. */
+	uint16_t peer_id;			/**< Connected  peer ID for this WDS peer. */
+	uint16_t ast_idx;			/**< AST (address search table) index for this peer in host. */
+	uint8_t reserved[2];		/**< Reserved for 4-byte alignment padding. */
+};
 
 /**
  * nss_wifili_msg
@@ -680,6 +734,10 @@
 				/**< Synchronization statistics. */
 		struct nss_wifili_peer_stats_msg peer_stats;
 				/**< Wifili peer statistics. */
+		struct nss_wifili_wds_peer_msg wdspeermsg;
+				/**< WDS peer-specific message. */
+		struct nss_wifili_wds_peer_map_msg wdspeermapmsg;
+				/**< WDS peer-mapping specific message. */
 	} msg;
 };