Browse Source

qcacmn: Management MGMT TXRX component over HTT

Currently there is no support for management MGMT TXRX
component over HTT endpoint and supports only over WMI.
As a result for platforms which does not support MGMT
over WMI will break other components which uses MGMT TXRX
component to send mgmt packets.

In this change implement changes to support MGMT TXRX
component over HTT.

Change-Id: I487aca3893aa21905a744e2e5dc7104e6c414fdc
CRs-Fixed: 2097694
Sravan Kumar Kairam 7 years ago
parent
commit
786886b483
4 changed files with 18 additions and 8 deletions
  1. 2 3
      dp/inc/cdp_txrx_cmn.h
  2. 4 4
      dp/inc/cdp_txrx_ops.h
  3. 6 0
      qdf/linux/src/i_qdf_nbuf.h
  4. 6 1
      wmi/inc/wmi_unified_param.h

+ 2 - 3
dp/inc/cdp_txrx_cmn.h

@@ -231,9 +231,8 @@ cdp_mgmt_send_ext(ol_txrx_soc_handle soc, struct cdp_vdev *vdev,
 
 static inline void
 cdp_mgmt_tx_cb_set(ol_txrx_soc_handle soc, struct cdp_pdev *pdev,
-			 uint8_t type,
-			 ol_txrx_mgmt_tx_cb download_cb,
-			 ol_txrx_mgmt_tx_cb ota_ack_cb, void *ctxt)
+		   uint8_t type, ol_txrx_mgmt_tx_cb download_cb,
+		   ol_txrx_mgmt_tx_cb ota_ack_cb, void *ctxt)
 {
 	if (soc->ops->cmn_drv_ops->txrx_mgmt_tx_cb_set)
 		return soc->ops->cmn_drv_ops->txrx_mgmt_tx_cb_set

+ 4 - 4
dp/inc/cdp_txrx_ops.h

@@ -104,10 +104,10 @@ struct cdp_cmn_ops {
 	 * callback function
 	 */
 
-	void (*txrx_mgmt_tx_cb_set)
-		(struct cdp_pdev *pdev, uint8_t type,
-		 ol_txrx_mgmt_tx_cb download_cb, ol_txrx_mgmt_tx_cb ota_ack_cb,
-		 void *ctxt);
+	void (*txrx_mgmt_tx_cb_set)(struct cdp_pdev *pdev, uint8_t type,
+				    ol_txrx_mgmt_tx_cb download_cb,
+				    ol_txrx_mgmt_tx_cb ota_ack_cb,
+				    void *ctxt);
 
 	int (*txrx_get_tx_pending)(struct cdp_pdev *pdev);
 

+ 6 - 0
qdf/linux/src/i_qdf_nbuf.h

@@ -129,6 +129,7 @@ typedef union {
  * @tx.ipa.owned   : packet owned by IPA
  * @tx.ipa.priv    : private data, used by IPA
  * @tx.desc_id     : tx desc id, used to sync between host and fw
+ * @tx.mgmt_desc_id     : used to get mgmt descriptor for tx completion cb
  */
 struct qdf_nbuf_cb {
 	/* common */
@@ -232,6 +233,7 @@ struct qdf_nbuf_cb {
 							priv:31;
 					} ipa;
 					uint16_t desc_id;
+					uint16_t mgmt_desc_id;
 				} mcl;
 			} dev;
 		} tx;
@@ -373,6 +375,10 @@ QDF_COMPILE_TIME_ASSERT(qdf_nbuf_cb_size,
 
 #define QDF_NBUF_CB_TX_DESC_ID(skb) \
 	(((struct qdf_nbuf_cb *)((skb)->cb))->u.tx.dev.mcl.desc_id)
+
+#define QDF_NBUF_CB_MGMT_TXRX_DESC_ID(skb) \
+	(((struct qdf_nbuf_cb *)((skb)->cb))->u.tx.dev.mcl.mgmt_desc_id)
+
 #define QDF_NBUF_CB_TX_PACKET_STATE(skb) \
 	(((struct qdf_nbuf_cb *) \
 		((skb)->cb))->u.tx.dev.mcl.trace.packet_state)

+ 6 - 1
wmi/inc/wmi_unified_param.h

@@ -1372,10 +1372,13 @@ struct tx_send_params {
  * @chanfreq: channel frequency
  * @pdata: frame data
  * @desc_id: descriptor id relyaed back by target
- * @macaddr - macaddr of peer
+ * @macaddr: macaddr of peer
  * @qdf_ctx: qdf context for qdf_nbuf_map
  * @tx_param: TX send parameters
  * @tx_params_valid: Flag that indicates if TX params are valid
+ * @use_6mbps: specify whether management frame to transmit should
+ *  use 6 Mbps rather than 1 Mbps min rate(for 5GHz band or P2P)
+ * @tx_type: type of managment frame (determines what callback to use)
  */
 struct wmi_mgmt_params {
 	void *tx_frame;
@@ -1388,6 +1391,8 @@ struct wmi_mgmt_params {
 	void *qdf_ctx;
 	struct tx_send_params tx_param;
 	bool tx_params_valid;
+	uint8_t use_6mbps;
+	uint8_t tx_type;
 };
 
 /**