소스 검색

qcacmn: Add CDP support for resolving RA from DA for ME6

Add support for parsing AST entries to resolve the RA for
multicast enhancement (mode 6) and enabling access of the API to
the higher layers through the use of the CDP framework.

Change-Id: I909bea86b90c22f311484c0b2653dd7623971c24
CRs-Fixed: 2333014
Aditya Sathish 6 년 전
부모
커밋
dc949c59be
3개의 변경된 파일25개의 추가작업 그리고 1개의 파일을 삭제
  1. 20 1
      dp/inc/cdp_txrx_me.h
  2. 4 0
      dp/inc/cdp_txrx_ops.h
  3. 1 0
      dp/wifi3.0/dp_main.c

+ 20 - 1
dp/inc/cdp_txrx_me.h

@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016-2017 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2016-2018 The Linux Foundation. All rights reserved.
  *
  * Permission to use, copy, modify, and/or distribute this software for
  * any purpose with or without fee is hereby granted, provided that the
@@ -140,6 +140,25 @@ cdp_tx_me_convert_ucast(ol_txrx_soc_handle soc, struct cdp_vdev *vdev,
 			(vdev, wbuf, newmac, newmaccnt);
 }
 
+static inline uint16_t
+cdp_tx_me_find_ast_entry(ol_txrx_soc_handle soc, struct cdp_vdev *vdev,
+			 uint8_t *da_mac_addr, uint8_t *ra_mac_addr)
+{
+	if (!soc || !soc->ops) {
+		QDF_TRACE(QDF_MODULE_ID_CDP, QDF_TRACE_LEVEL_DEBUG,
+				"%s: Invalid Instance", __func__);
+		QDF_BUG(0);
+		return 0;
+	}
+
+	if (!soc->ops->me_ops ||
+	    !soc->ops->me_ops->tx_me_find_ast_entry)
+		return 0;
+
+	return soc->ops->me_ops->tx_me_find_ast_entry(vdev, da_mac_addr,
+						      ra_mac_addr);
+}
+
 /* Should be a function pointer in ol_txrx_osif_ops{} */
 /**
  * @brief notify mcast frame indication from FW.

+ 4 - 0
dp/inc/cdp_txrx_ops.h

@@ -590,6 +590,10 @@ struct cdp_me_ops {
 
 	int (*mcast_notify)(struct cdp_pdev *pdev,
 			u_int8_t vdev_id, qdf_nbuf_t msdu);
+
+	uint16_t (*tx_me_find_ast_entry)(struct cdp_vdev *vdev,
+					 uint8_t *da_mac_addr,
+					 uint8_t *ra_mac_addr);
 };
 
 struct cdp_mon_ops {

+ 1 - 0
dp/wifi3.0/dp_main.c

@@ -8335,6 +8335,7 @@ static struct cdp_me_ops dp_ops_me = {
 	.tx_me_free_descriptor = dp_tx_me_free_descriptor,
 	.tx_me_convert_ucast = dp_tx_me_send_convert_ucast,
 #endif
+	.tx_me_find_ast_entry = NULL,
 };
 
 static struct cdp_mon_ops dp_ops_mon = {