qcacld-3.0: Data path changes to use converged APIs (Part 5)
Changes in the data path to use the converged MCL specific APIs.
Change-Id: Iaedc5e7e175d6b8eb905a04178fe9772dc7bb797
CRs-Fixed: 994638
diff --git a/core/dp/ol/inc/ol_txrx_ctrl_api.h b/core/dp/ol/inc/ol_txrx_ctrl_api.h
index 5e426e9..203eb69 100644
--- a/core/dp/ol/inc/ol_txrx_ctrl_api.h
+++ b/core/dp/ol/inc/ol_txrx_ctrl_api.h
@@ -397,26 +397,6 @@
ol_txrx_peer_handle
ol_txrx_peer_find_by_addr(ol_txrx_pdev_handle pdev, uint8_t *peer_mac_addr);
-/**
- * @brief Find a txrx peer handle from a peer's local ID
- * @details
- * The control SW typically uses the txrx peer handle to refer to the peer.
- * In unusual circumstances, if it is infeasible for the control SW maintain
- * the txrx peer handle but it can maintain a small integer local peer ID,
- * this function allows the peer handled to be retrieved, based on the local
- * peer ID.
- *
- * @param pdev - the data physical device object
- * @param local_peer_id - the ID txrx assigned locally to the peer in question
- * @return handle to the txrx peer object
- */
-#if QCA_SUPPORT_TXRX_LOCAL_PEER_ID
-ol_txrx_peer_handle
-ol_txrx_peer_find_by_local_id(ol_txrx_pdev_handle pdev, uint8_t local_peer_id);
-#else
-#define ol_txrx_peer_find_by_local_id(pdev, local_peer_id) NULL
-#endif
-
struct ol_txrx_peer_stats_t {
struct {
struct {
@@ -468,7 +448,6 @@
void *ol_txrx_get_vdev_by_sta_id(uint8_t sta_id);
-
#define OL_TXRX_INVALID_LOCAL_PEER_ID 0xffff
#define OL_TXRX_RSSI_INVALID 0xffff
@@ -498,67 +477,6 @@
#define ol_txrx_peer_rssi(peer) OL_TXRX_RSSI_INVALID
#endif /* QCA_SUPPORT_PEER_DATA_RX_RSSI */
-#if QCA_SUPPORT_TXRX_LOCAL_PEER_ID
-#else
-#endif
-
-#ifdef QCA_COMPUTE_TX_DELAY
-/**
- * @brief updates the compute interval period for TSM stats.
- * @details
- * @param interval - interval for stats computation
- */
-void ol_tx_set_compute_interval(ol_txrx_pdev_handle pdev, uint32_t interval);
-
-/**
- * @brief Return the uplink (transmitted) packet count and loss count.
- * @details
- * This function will be called for getting uplink packet count and
- * loss count for given stream (access category) a regular interval.
- * This also resets the counters hence, the value returned is packets
- * counted in last 5(default) second interval. These counter are
- * incremented per access category in ol_tx_completion_handler()
- *
- * @param category - access category of interest
- * @param out_packet_count - number of packets transmitted
- * @param out_packet_loss_count - number of packets lost
- */
-void
-ol_tx_packet_count(ol_txrx_pdev_handle pdev,
- uint16_t *out_packet_count,
- uint16_t *out_packet_loss_count, int category);
-#endif
-
-/**
- * @brief Return the average delays for tx frames.
- * @details
- * Return the average of the total time tx frames spend within the driver
- * and the average time tx frames take to be transmitted.
- * These averages are computed over a 5 second time interval.
- * These averages are computed separately for separate access categories,
- * if the QCA_COMPUTE_TX_DELAY_PER_AC flag is set.
- *
- * @param pdev - the data physical device instance
- * @param queue_delay_microsec - average time tx frms spend in the WLAN driver
- * @param tx_delay_microsec - average time for frames to be transmitted
- * @param category - category (TID) of interest
- */
-#ifdef QCA_COMPUTE_TX_DELAY
-void
-ol_tx_delay(ol_txrx_pdev_handle pdev,
- uint32_t *queue_delay_microsec,
- uint32_t *tx_delay_microsec, int category);
-#else
-static inline void
-ol_tx_delay(ol_txrx_pdev_handle pdev,
- uint32_t *queue_delay_microsec,
- uint32_t *tx_delay_microsec, int category)
-{
- /* no-op version if QCA_COMPUTE_TX_DELAY is not set */
- *queue_delay_microsec = *tx_delay_microsec = 0;
-}
-#endif
-
/*
* Bins used for reporting delay histogram:
* bin 0: 0 - 10 ms delay
@@ -569,77 +487,6 @@
* bin 5: > 160 ms delay
*/
#define QCA_TX_DELAY_HIST_REPORT_BINS 6
-/**
- * @brief Provide a histogram of tx queuing delays.
- * @details
- * Return a histogram showing the number of tx frames of the specified
- * category for each of the delay levels in the histogram bin spacings
- * listed above.
- * These histograms are computed over a 5 second time interval.
- * These histograms are computed separately for separate access categories,
- * if the QCA_COMPUTE_TX_DELAY_PER_AC flag is set.
- *
- * @param pdev - the data physical device instance
- * @param bin_values - an array of QCA_TX_DELAY_HIST_REPORT_BINS elements
- * This array gets filled in with the histogram bin counts.
- * @param category - category (TID) of interest
- */
-#ifdef QCA_COMPUTE_TX_DELAY
-void
-ol_tx_delay_hist(ol_txrx_pdev_handle pdev, uint16_t *bin_values, int category);
-#else
-static inline void
-ol_tx_delay_hist(ol_txrx_pdev_handle pdev, uint16_t *bin_values, int category)
-{
- /* no-op version if QCA_COMPUTE_TX_DELAY is not set */
- qdf_assert(bin_values);
- qdf_mem_zero(bin_values,
- QCA_TX_DELAY_HIST_REPORT_BINS * sizeof(*bin_values));
-}
-#endif
-
-#if defined(QCA_SUPPORT_TX_THROTTLE)
-/**
- * @brief Set the thermal mitgation throttling level.
- * @details
- * This function applies only to LL systems. This function is used set the
- * tx throttle level used for thermal mitigation
- *
- * @param pdev - the physics device being throttled
- */
-void ol_tx_throttle_set_level(struct ol_txrx_pdev_t *pdev, int level);
-#else
-static inline void ol_tx_throttle_set_level(struct ol_txrx_pdev_t *pdev,
- int level)
-{
- /* no-op */
-}
-#endif /* QCA_SUPPORT_TX_THROTTLE */
-
-#if defined(QCA_SUPPORT_TX_THROTTLE)
-/**
- * @brief Configure the thermal mitgation throttling period.
- * @details
- * This function applies only to LL systems. This function is used set the
- * period over which data will be throttled
- *
- * @param pdev - the physics device being throttled
- */
-void ol_tx_throttle_init_period(struct ol_txrx_pdev_t *pdev, int period);
-#else
-static inline void ol_tx_throttle_init_period(struct ol_txrx_pdev_t *pdev,
- int period)
-{
- /* no-op */
-}
-#endif /* QCA_SUPPORT_TX_THROTTLE */
-
-void ol_txrx_display_stats(uint16_t bitmap);
-void ol_txrx_clear_stats(uint16_t bitmap);
-int ol_txrx_stats(uint8_t vdev_id, char *buffer, unsigned buf_len);
-
-QDF_STATUS ol_txrx_register_ocb_peer(void *cds_ctx, uint8_t *mac_addr,
- uint8_t *peer_id);
void ol_txrx_set_ocb_peer(struct ol_txrx_pdev_t *pdev,
struct ol_txrx_peer_t *peer);
diff --git a/core/dp/ol/inc/ol_txrx_osif_api.h b/core/dp/ol/inc/ol_txrx_osif_api.h
index 54da414..007e1c4 100644
--- a/core/dp/ol/inc/ol_txrx_osif_api.h
+++ b/core/dp/ol/inc/ol_txrx_osif_api.h
@@ -35,6 +35,7 @@
#include <qdf_nbuf.h> /* qdf_nbuf_t */
#include "cds_sched.h"
#include "ol_txrx_ctrl_api.h"
+#include <cdp_txrx_peer_ops.h>
/**
* struct ol_rx_cached_buf - rx cached buffer
diff --git a/core/dp/txrx/ol_tx.c b/core/dp/txrx/ol_tx.c
index 1c9219c..3b324ab 100644
--- a/core/dp/txrx/ol_tx.c
+++ b/core/dp/txrx/ol_tx.c
@@ -52,6 +52,7 @@
#include <htc_api.h> /* Layering violation, but required for fast path */
#include <htt_internal.h>
#include <htt_types.h> /* htc_endpoint */
+#include <cdp_txrx_peer_ops.h>
int ce_send_fast(struct CE_handle *copyeng, qdf_nbuf_t *msdus,
unsigned int num_msdus, unsigned int transfer_id);
diff --git a/core/dp/txrx/ol_tx_queue.c b/core/dp/txrx/ol_tx_queue.c
index 6aa2cd7..b0cfe07 100644
--- a/core/dp/txrx/ol_tx_queue.c
+++ b/core/dp/txrx/ol_tx_queue.c
@@ -30,6 +30,9 @@
#include <ol_cfg.h> /* ol_cfg_addba_retry */
#include <htt.h> /* HTT_TX_EXT_TID_MGMT */
#include <ol_htt_tx_api.h> /* htt_tx_desc_tid */
+#include <ol_txrx_api.h> /* ol_txrx_vdev_handle */
+#include <ol_txrx_ctrl_api.h> /* ol_txrx_sync, ol_tx_addba_conf */
+#include <cdp_txrx_tx_throttle.h>
#include <ol_ctrl_txrx_api.h> /* ol_ctrl_addba_req */
#include <ol_txrx_internal.h> /* TXRX_ASSERT1, etc. */
#include <ol_tx_desc.h> /* ol_tx_desc, ol_tx_desc_frame_list_free */
diff --git a/core/dp/txrx/ol_tx_send.c b/core/dp/txrx/ol_tx_send.c
index cd3cd88..c09d109 100644
--- a/core/dp/txrx/ol_tx_send.c
+++ b/core/dp/txrx/ol_tx_send.c
@@ -43,6 +43,8 @@
#include <ol_txrx_htt_api.h> /* htt_tx_status */
#include <ol_ctrl_txrx_api.h>
+#include <cdp_txrx_tx_delay.h>
+#include <ol_txrx_types.h> /* ol_txrx_vdev_t, etc */
#include <ol_tx_desc.h> /* ol_tx_desc_find, ol_tx_desc_frame_free */
#ifdef QCA_COMPUTE_TX_DELAY
#endif
@@ -651,12 +653,29 @@
}
#ifdef QCA_COMPUTE_TX_DELAY
-
+/**
+ * @brief updates the compute interval period for TSM stats.
+ * @details
+ * @param interval - interval for stats computation
+ */
void ol_tx_set_compute_interval(ol_txrx_pdev_handle pdev, uint32_t interval)
{
pdev->tx_delay.avg_period_ticks = qdf_system_msecs_to_ticks(interval);
}
+/**
+ * @brief Return the uplink (transmitted) packet count and loss count.
+ * @details
+ * This function will be called for getting uplink packet count and
+ * loss count for given stream (access category) a regular interval.
+ * This also resets the counters hence, the value returned is packets
+ * counted in last 5(default) second interval. These counter are
+ * incremented per access category in ol_tx_completion_handler()
+ *
+ * @param category - access category of interest
+ * @param out_packet_count - number of packets transmitted
+ * @param out_packet_loss_count - number of packets lost
+ */
void
ol_tx_packet_count(ol_txrx_pdev_handle pdev,
uint16_t *out_packet_count,
diff --git a/core/dp/txrx/ol_txrx.c b/core/dp/txrx/ol_txrx.c
index a4a7b66..77c48f3 100644
--- a/core/dp/txrx/ol_txrx.c
+++ b/core/dp/txrx/ol_txrx.c
@@ -50,6 +50,9 @@
#include <ol_txrx_api.h>
#include <ol_txrx_dbg.h>
#include <cdp_txrx_ocb.h>
+#include <ol_txrx_ctrl_api.h>
+#include <cdp_txrx_stats.h>
+#include <ol_txrx_osif_api.h>
/* header files for our internal definitions */
#include <ol_txrx_internal.h> /* TXRX_ASSERT, etc. */
#include <wdi_event.h> /* WDI events */
@@ -67,6 +70,7 @@
#include <cdp_txrx_flow_ctrl_legacy.h>
#include <cdp_txrx_ipa.h>
#include "wma.h"
+#include <cdp_txrx_peer_ops.h>
#ifndef REMOVE_PKT_LOG
#include "pktlog_ac.h"
#endif
@@ -185,6 +189,19 @@
return peer->local_id;
}
+/**
+ * @brief Find a txrx peer handle from a peer's local ID
+ * @details
+ * The control SW typically uses the txrx peer handle to refer to the peer.
+ * In unusual circumstances, if it is infeasible for the control SW maintain
+ * the txrx peer handle but it can maintain a small integer local peer ID,
+ * this function allows the peer handled to be retrieved, based on the local
+ * peer ID.
+ *
+ * @param pdev - the data physical device object
+ * @param local_peer_id - the ID txrx assigned locally to the peer in question
+ * @return handle to the txrx peer object
+ */
ol_txrx_peer_handle
ol_txrx_peer_find_by_local_id(struct ol_txrx_pdev_t *pdev,
uint8_t local_peer_id)
@@ -1860,9 +1877,25 @@
return vdev->ocb_channel_info;
}
-QDF_STATUS
-ol_txrx_peer_state_update(struct ol_txrx_pdev_t *pdev, uint8_t *peer_mac,
- enum ol_txrx_peer_state state)
+/**
+ * @brief specify the peer's authentication state
+ * @details
+ * Specify the peer's authentication state (none, connected, authenticated)
+ * to allow the data SW to determine whether to filter out invalid data frames.
+ * (In the "connected" state, where security is enabled, but authentication
+ * has not completed, tx and rx data frames other than EAPOL or WAPI should
+ * be discarded.)
+ * This function is only relevant for systems in which the tx and rx filtering
+ * are done in the host rather than in the target.
+ *
+ * @param data_peer - which peer has changed its state
+ * @param state - the new state of the peer
+ *
+ * Return: CDF Status
+ */
+QDF_STATUS ol_txrx_peer_state_update(struct ol_txrx_pdev_t *pdev,
+ uint8_t *peer_mac,
+ enum ol_txrx_peer_state state)
{
struct ol_txrx_peer_t *peer;