qcacld-3.0: Data path changes to use converged APIs (Part 3)

Changes to register a per vdev tx callback function.

Register a per-vdev transmit function during vdev registration.
The OS interface (HDD) adapter stores this transmit function and
invokes it to transmit data frames.

Change-Id: I1dfe6f58d1d26069dadc2d719fff242c29071bad
CRs-Fixed: 994638
diff --git a/core/dp/txrx/ol_tx.c b/core/dp/txrx/ol_tx.c
index 0956af1..eb9cf21 100644
--- a/core/dp/txrx/ol_tx.c
+++ b/core/dp/txrx/ol_tx.c
@@ -132,19 +132,16 @@
 #endif
 
 /**
- * ol_tx_send_data_frame() - send data frame
- * @sta_id: sta id
+ * ol_tx_data() - send data frame
+ * @vdev: virtual device handle
  * @skb: skb
- * @proto_type: proto type
  *
  * Return: skb/NULL for success
  */
-qdf_nbuf_t ol_tx_send_data_frame(uint8_t sta_id, qdf_nbuf_t skb,
-				 uint8_t proto_type)
+qdf_nbuf_t ol_tx_data(ol_txrx_vdev_handle vdev, qdf_nbuf_t skb)
 {
 	void *qdf_ctx = cds_get_context(QDF_MODULE_ID_QDF_DEVICE);
-	struct ol_txrx_pdev_t *pdev = cds_get_context(QDF_MODULE_ID_TXRX);
-	struct ol_txrx_peer_t *peer;
+	struct ol_txrx_pdev_t *pdev = vdev->pdev;
 	qdf_nbuf_t ret;
 	QDF_STATUS status;
 
@@ -159,25 +156,6 @@
 		return skb;
 	}
 
-	if (sta_id >= WLAN_MAX_STA_COUNT) {
-		QDF_TRACE(QDF_MODULE_ID_TXRX, QDF_TRACE_LEVEL_WARN,
-			"%s:Invalid sta id", __func__);
-		return skb;
-	}
-
-	peer = ol_txrx_peer_find_by_local_id(pdev, sta_id);
-	if (!peer) {
-		QDF_TRACE(QDF_MODULE_ID_TXRX, QDF_TRACE_LEVEL_WARN,
-			"%s:Invalid peer", __func__);
-		return skb;
-	}
-
-	if (peer->state < ol_txrx_peer_state_conn) {
-		QDF_TRACE(QDF_MODULE_ID_TXRX, QDF_TRACE_LEVEL_WARN,
-			"%s: station to be yet registered..dropping pkt", __func__);
-		return skb;
-	}
-
 	status = qdf_nbuf_map_single(qdf_ctx, skb, QDF_DMA_TO_DEVICE);
 	if (qdf_unlikely(status != QDF_STATUS_SUCCESS)) {
 		QDF_TRACE(QDF_MODULE_ID_TXRX, QDF_TRACE_LEVEL_WARN,
@@ -185,8 +163,6 @@
 		return skb;
 	}
 
-	qdf_nbuf_trace_set_proto_type(skb, proto_type);
-
 	if ((ol_cfg_is_ip_tcp_udp_checksum_offload_enabled(pdev->ctrl_pdev))
 		&& (qdf_nbuf_get_protocol(skb) == htons(ETH_P_IP))
 		&& (qdf_nbuf_get_ip_summed(skb) == CHECKSUM_PARTIAL))
@@ -194,7 +170,7 @@
 
 	/* Terminate the (single-element) list of tx frames */
 	qdf_nbuf_set_next(skb, NULL);
-	ret = OL_TX_LL(peer->vdev, skb);
+	ret = OL_TX_LL(vdev, skb);
 	if (ret) {
 		QDF_TRACE(QDF_MODULE_ID_TXRX, QDF_TRACE_LEVEL_WARN,
 			"%s: Failed to tx", __func__);