qcacmn: Modify set 1 of ctrl_ops to acheive umac-dp decoupling
Change set 1 of the ctrl_ops APIs to replace pdev, vdev and peer
dp handles with pdev_id, vdev_id and peer mac address
along with dp soc handle
Change-Id: Iedf6dea2215d3d04b2212c71c8ec8c7328c559e8
diff --git a/dp/inc/cdp_txrx_cmn.h b/dp/inc/cdp_txrx_cmn.h
index 9350c5e..bd7968d 100644
--- a/dp/inc/cdp_txrx_cmn.h
+++ b/dp/inc/cdp_txrx_cmn.h
@@ -1778,24 +1778,25 @@
return 0;
}
-static inline int cdp_set_key(ol_txrx_soc_handle soc,
- struct cdp_peer *peer_handle,
- bool is_unicast, uint32_t *key)
+static inline QDF_STATUS
+cdp_set_key(ol_txrx_soc_handle soc,
+ uint8_t vdev_id,
+ uint8_t *mac,
+ bool is_unicast, uint32_t *key)
{
if (!soc || !soc->ops) {
QDF_TRACE(QDF_MODULE_ID_CDP, QDF_TRACE_LEVEL_DEBUG,
"%s: Invalid Instance:", __func__);
QDF_BUG(0);
- return 0;
+ return QDF_STATUS_E_FAILURE;
}
if (!soc->ops->ctrl_ops ||
!soc->ops->ctrl_ops->set_key)
- return 0;
+ return QDF_STATUS_E_FAILURE;
- soc->ops->ctrl_ops->set_key(peer_handle,
+ return soc->ops->ctrl_ops->set_key(soc, vdev_id, mac,
is_unicast, key);
- return 0;
}
/**
diff --git a/dp/inc/cdp_txrx_cmn_struct.h b/dp/inc/cdp_txrx_cmn_struct.h
index 0fd0083..e3e770b 100644
--- a/dp/inc/cdp_txrx_cmn_struct.h
+++ b/dp/inc/cdp_txrx_cmn_struct.h
@@ -685,11 +685,12 @@
/**
* ol_txrx_tx_exc_fp - top-level transmit function on exception path
- * @data_vdev - handle to the virtual device object
+ * @soc - dp soc handle
+ * @vdev_id - handle to the virtual device object
* @msdu_list - list of network buffers
* @tx_exc_metadata - structure that holds parameters to exception path
*/
-typedef qdf_nbuf_t (*ol_txrx_tx_exc_fp)(struct cdp_vdev *data_vdev,
+typedef qdf_nbuf_t (*ol_txrx_tx_exc_fp)(struct cdp_soc_t *soc, uint8_t vdev_id,
qdf_nbuf_t msdu_list,
struct cdp_tx_exception_metadata
*tx_exc_metadata);
diff --git a/dp/inc/cdp_txrx_ctrl.h b/dp/inc/cdp_txrx_ctrl.h
index 7f47bde..86c9976 100644
--- a/dp/inc/cdp_txrx_ctrl.h
+++ b/dp/inc/cdp_txrx_ctrl.h
@@ -30,7 +30,7 @@
#include "cdp_txrx_ops.h"
static inline int cdp_is_target_ar900b
- (ol_txrx_soc_handle soc, struct cdp_vdev *vdev)
+ (ol_txrx_soc_handle soc)
{
if (!soc || !soc->ops) {
QDF_TRACE(QDF_MODULE_ID_CDP, QDF_TRACE_LEVEL_DEBUG,
@@ -43,7 +43,7 @@
!soc->ops->ctrl_ops->txrx_is_target_ar900b)
return 0;
- return soc->ops->ctrl_ops->txrx_is_target_ar900b(vdev);
+ return soc->ops->ctrl_ops->txrx_is_target_ar900b(soc);
}
@@ -101,14 +101,14 @@
* which needs to be filtered
*
* @param soc - the pointer to soc object
- * @param vdev - the pointer to vdev
+ * @param vdev_id - id of the pointer to vdev
* @param cmd - add/del entry into peer table
* @param macaddr - the address of neighbour peer
* @return - int
*/
static inline int
cdp_update_filter_neighbour_peers(ol_txrx_soc_handle soc,
- struct cdp_vdev *vdev, uint32_t cmd, uint8_t *macaddr)
+ uint8_t vdev_id, uint32_t cmd, uint8_t *macaddr)
{
if (!soc || !soc->ops) {
QDF_TRACE(QDF_MODULE_ID_CDP, QDF_TRACE_LEVEL_DEBUG,
@@ -122,7 +122,7 @@
return 0;
return soc->ops->ctrl_ops->txrx_update_filter_neighbour_peers
- (vdev, cmd, macaddr);
+ (soc, vdev_id, cmd, macaddr);
}
/**
@@ -268,38 +268,38 @@
* This will be used to configure the Reo Destination ring for this pdev.
*
* @param soc - pointer to the soc
- * @param pdev - the data physical device object
+ * @param pdev_id - id of the data physical device object
* @param val - the Reo destination ring index (1 to 4)
- * @return - void
+ * @return - QDF_STATUS
*/
-static inline void
+static inline QDF_STATUS
cdp_set_pdev_reo_dest(ol_txrx_soc_handle soc,
- struct cdp_pdev *pdev, enum cdp_host_reo_dest_ring val)
+ uint8_t pdev_id, enum cdp_host_reo_dest_ring val)
{
if (!soc || !soc->ops) {
QDF_TRACE(QDF_MODULE_ID_CDP, QDF_TRACE_LEVEL_DEBUG,
"%s: Invalid Instance:", __func__);
QDF_BUG(0);
- return;
+ return QDF_STATUS_E_FAILURE;
}
if (!soc->ops->ctrl_ops ||
!soc->ops->ctrl_ops->txrx_set_pdev_reo_dest)
- return;
+ return QDF_STATUS_E_FAILURE;
- soc->ops->ctrl_ops->txrx_set_pdev_reo_dest
- (pdev, val);
+ return soc->ops->ctrl_ops->txrx_set_pdev_reo_dest
+ (soc, pdev_id, val);
}
/**
* @brief get the Reo Destination ring for the pdev
*
* @param soc - pointer to the soc
- * @param pdev - the data physical device object
+ * @param pdev_id - id of physical device object
* @return - the Reo destination ring index (1 to 4), 0 if not supported.
*/
static inline enum cdp_host_reo_dest_ring
-cdp_get_pdev_reo_dest(ol_txrx_soc_handle soc, struct cdp_pdev *pdev)
+cdp_get_pdev_reo_dest(ol_txrx_soc_handle soc, uint8_t pdev_id)
{
if (!soc || !soc->ops) {
QDF_TRACE(QDF_MODULE_ID_CDP, QDF_TRACE_LEVEL_DEBUG,
@@ -312,7 +312,7 @@
!soc->ops->ctrl_ops->txrx_get_pdev_reo_dest)
return cdp_host_reo_dest_ring_unknown;
- return soc->ops->ctrl_ops->txrx_get_pdev_reo_dest(pdev);
+ return soc->ops->ctrl_ops->txrx_get_pdev_reo_dest(soc, pdev_id);
}
/* Is this similar to ol_txrx_peer_state_update() in MCL */
@@ -469,7 +469,7 @@
#ifdef QCA_MULTIPASS_SUPPORT
static inline void
-cdp_peer_set_vlan_id(ol_txrx_soc_handle soc, struct cdp_vdev *vdev,
+cdp_peer_set_vlan_id(ol_txrx_soc_handle soc, uint8_t vdev_id,
uint8_t *peer_mac, uint8_t vlan_id)
{
if (!soc || !soc->ops) {
@@ -483,7 +483,8 @@
!soc->ops->ctrl_ops->txrx_peer_set_vlan_id)
return;
- soc->ops->ctrl_ops->txrx_peer_set_vlan_id(soc, vdev, peer_mac, vlan_id);
+ soc->ops->ctrl_ops->txrx_peer_set_vlan_id(soc, vdev_id, peer_mac,
+ vlan_id);
}
#endif
@@ -520,7 +521,7 @@
* cdp_enable_peer_based_pktlog()- Set flag in peer structure
*
* @soc: pointer to the soc
- * @pdev: the data physical device object
+ * @pdev_id: id of the data physical device object
* @enable: enable or disable peer based filter based pktlog
* @peer_macaddr: Mac address of peer which needs to be
* filtered
@@ -531,8 +532,8 @@
* Return: int
*/
static inline int
-cdp_enable_peer_based_pktlog(ol_txrx_soc_handle soc,
- struct cdp_pdev *pdev, char *peer_macaddr,
+cdp_enable_peer_based_pktlog(ol_txrx_soc_handle soc, uint8_t pdev_id,
+ char *peer_macaddr,
uint8_t enable)
{
if (!soc || !soc->ops) {
@@ -547,37 +548,37 @@
return 0;
return soc->ops->ctrl_ops->enable_peer_based_pktlog
- (pdev, peer_macaddr, enable);
+ (soc, pdev_id, peer_macaddr, enable);
}
/**
* cdp_calculate_delay_stats()- get rx delay stats
*
* @soc: pointer to the soc
- * @vdev: vdev handle
+ * @vdev_id: id of vdev handle
* @nbuf: nbuf which is passed
*
* This function will calculate rx delay statistics.
*/
-static inline void
-cdp_calculate_delay_stats(ol_txrx_soc_handle soc, struct cdp_vdev *vdev,
+static inline QDF_STATUS
+cdp_calculate_delay_stats(ol_txrx_soc_handle soc, uint8_t vdev_id,
qdf_nbuf_t nbuf)
{
if (!soc || !soc->ops) {
QDF_TRACE(QDF_MODULE_ID_CDP, QDF_TRACE_LEVEL_DEBUG,
"%s: Invalid Instance:", __func__);
QDF_BUG(0);
- return;
+ return QDF_STATUS_E_FAILURE;
}
if (!soc->ops->ctrl_ops ||
!soc->ops->ctrl_ops->calculate_delay_stats) {
QDF_TRACE(QDF_MODULE_ID_CDP, QDF_TRACE_LEVEL_DEBUG,
"%s: callback not registered:", __func__);
- return;
+ return QDF_STATUS_E_FAILURE;
}
- return soc->ops->ctrl_ops->calculate_delay_stats(vdev, nbuf);
+ return soc->ops->ctrl_ops->calculate_delay_stats(soc, vdev_id, nbuf);
}
/**
@@ -591,19 +592,19 @@
* invoked is unspecified.
*
* @param soc - pointer to the soc
- * @param pdev - the data physical device object
+ * @param pdev_id - id of the data physical device object
* @param event_cb_sub - the callback and context for the event subscriber
* @param event - which event's notifications are being subscribed to
* @return - int
*/
static inline int
-cdp_wdi_event_sub(ol_txrx_soc_handle soc,
- struct cdp_pdev *pdev, void *event_cb_sub, uint32_t event)
+cdp_wdi_event_sub(ol_txrx_soc_handle soc, uint8_t pdev_id,
+ wdi_event_subscribe *event_cb_sub, uint32_t event)
{
if (!soc || !soc->ops) {
QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_DEBUG,
- "%s invalid instance", __func__);
+ "%s invalid instance", __func__);
QDF_BUG(0);
return 0;
}
@@ -613,7 +614,7 @@
return 0;
return soc->ops->ctrl_ops->txrx_wdi_event_sub
- (pdev, event_cb_sub, event);
+ (soc, pdev_id, event_cb_sub, event);
}
/**
@@ -625,14 +626,15 @@
* to event_sub() on the same wdi_event_subscribe object.
*
* @param soc - pointer to the soc
- * @param pdev - the data physical device object
+ * @param pdev_id - id of the data physical device object
* @param event_cb_sub - the callback and context for the event subscriber
* @param event - which event's notifications are being subscribed to
* @return - int
*/
static inline int
cdp_wdi_event_unsub(ol_txrx_soc_handle soc,
- struct cdp_pdev *pdev, void *event_cb_sub, uint32_t event)
+ uint8_t pdev_id, wdi_event_subscribe *event_cb_sub,
+ uint32_t event)
{
if (!soc || !soc->ops) {
@@ -647,7 +649,7 @@
return 0;
return soc->ops->ctrl_ops->txrx_wdi_event_unsub
- (pdev, event_cb_sub, event);
+ (soc, pdev_id, event_cb_sub, event);
}
/**
@@ -658,16 +660,18 @@
* to the peer handler.
*
* @param soc - pointer to the soc
- * @param peer - peer handler
+ * @param vdev_id - id of vdev handle
+ * @param peer mac - peer mac address
* @param sec_idx - mcast or ucast frame type.
* @return - int
*/
static inline int
-cdp_get_sec_type(ol_txrx_soc_handle soc, struct cdp_peer *peer, uint8_t sec_idx)
+cdp_get_sec_type(ol_txrx_soc_handle soc, uint8_t vdev_id, uint8_t *peer_mac,
+ uint8_t sec_idx)
{
if (!soc || !soc->ops) {
QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_DEBUG,
- "%s invalid instance", __func__);
+ "%s invalid instance", __func__);
QDF_BUG(0);
return A_ERROR;
}
@@ -677,33 +681,34 @@
return A_ERROR;
return soc->ops->ctrl_ops->txrx_get_sec_type
- (peer, sec_idx);
+ (soc, vdev_id, peer_mac, sec_idx);
}
/**
* cdp_set_mgmt_tx_power(): function to set tx power for mgmt frames
- * @vdev_handle: vdev handle
+ * @param soc - pointer to the soc
+ * @vdev_id : id of vdev handle
* @subtype_index: subtype
* @tx_power: Tx power
- * Return: None
+ * Return: QDF_STATUS
*/
-static inline int cdp_set_mgmt_tx_power(ol_txrx_soc_handle soc,
- struct cdp_vdev *vdev, uint8_t subtype, uint8_t tx_power)
+static inline QDF_STATUS
+cdp_set_mgmt_tx_power(ol_txrx_soc_handle soc,
+ uint8_t vdev_id, uint8_t subtype, uint8_t tx_power)
{
if (!soc || !soc->ops) {
QDF_TRACE(QDF_MODULE_ID_CDP, QDF_TRACE_LEVEL_DEBUG,
"%s: Invalid Instance:", __func__);
QDF_BUG(0);
- return 0;
+ return QDF_STATUS_E_FAILURE;
}
if (!soc->ops->ctrl_ops ||
!soc->ops->ctrl_ops->txrx_update_mgmt_txpow_vdev)
- return 0;
+ return QDF_STATUS_E_FAILURE;
- soc->ops->ctrl_ops->txrx_update_mgmt_txpow_vdev(vdev,
+ return soc->ops->ctrl_ops->txrx_update_mgmt_txpow_vdev(soc, vdev_id,
subtype, tx_power);
- return 0;
}
static inline void *
@@ -802,7 +807,7 @@
/**
* cdp_update_peer_pkt_capture_params() - Sets Rx & Tx Capture params for a peer
* @soc: SOC TXRX handle
- * @pdev: CDP pdev pointer
+ * @pdev_id: id of CDP pdev pointer
* @is_rx_pkt_cap_enable: enable/disable rx pkt capture for this peer
* @is_tx_pkt_cap_enable: enable/disable tx pkt capture for this peer
* @peer_mac: MAC address of peer for which pkt_cap is to be enabled/disabled
@@ -811,7 +816,7 @@
*/
static inline QDF_STATUS
cdp_update_peer_pkt_capture_params(ol_txrx_soc_handle soc,
- struct cdp_pdev *pdev,
+ uint8_t pdev_id,
bool is_rx_pkt_cap_enable,
bool is_tx_pkt_cap_enable,
uint8_t *peer_mac)
@@ -827,7 +832,8 @@
return QDF_STATUS_E_FAILURE;
return soc->ops->ctrl_ops->txrx_update_peer_pkt_capture_params
- (pdev, is_rx_pkt_cap_enable, is_tx_pkt_cap_enable,
+ (soc, pdev_id, is_rx_pkt_cap_enable,
+ is_tx_pkt_cap_enable,
peer_mac);
}
#endif /* WLAN_TX_PKT_CAPTURE_ENH || WLAN_RX_PKT_CAPTURE_ENH */
@@ -837,7 +843,7 @@
* cdp_update_pdev_rx_protocol_tag() - wrapper function to set the protocol
* tag in CDP layer from cfg layer
* @soc: SOC TXRX handle
- * @pdev: CDP pdev pointer
+ * @pdev_id: id of CDP pdev pointer
* @protocol_mask: Bitmap for protocol for which tagging is enabled
* @protocol_type: Protocol type for which the tag should be update
* @tag: Actual tag value for the given prototype
@@ -845,7 +851,7 @@
*/
static inline QDF_STATUS
cdp_update_pdev_rx_protocol_tag(ol_txrx_soc_handle soc,
- struct cdp_pdev *pdev, uint32_t protocol_mask,
+ uint8_t pdev_id, uint32_t protocol_mask,
uint16_t protocol_type, uint16_t tag)
{
if (!soc || !soc->ops) {
@@ -859,7 +865,7 @@
return QDF_STATUS_E_FAILURE;
return soc->ops->ctrl_ops->txrx_update_pdev_rx_protocol_tag
- (pdev, protocol_mask, protocol_type, tag);
+ (soc, pdev_id, protocol_mask, protocol_type, tag);
}
#ifdef WLAN_SUPPORT_RX_TAG_STATISTICS
@@ -867,13 +873,13 @@
* cdp_dump_pdev_rx_protocol_tag_stats() - wrapper function to dump the protocol
tag statistics for given or all protocols
* @soc: SOC TXRX handle
- * @pdev: CDP pdev pointer
+ * @pdev_id: id of CDP pdev pointer
* @protocol_type: Protocol type for which the tag should be update
* Return: Returns QDF_STATUS_SUCCESS/FAILURE
*/
static inline QDF_STATUS
cdp_dump_pdev_rx_protocol_tag_stats(ol_txrx_soc_handle soc,
- struct cdp_pdev *pdev,
+ uint8_t pdev_id,
uint16_t protocol_type)
{
if (!soc || !soc->ops) {
@@ -886,7 +892,7 @@
!soc->ops->ctrl_ops->txrx_dump_pdev_rx_protocol_tag_stats)
return QDF_STATUS_E_FAILURE;
- soc->ops->ctrl_ops->txrx_dump_pdev_rx_protocol_tag_stats(pdev,
+ soc->ops->ctrl_ops->txrx_dump_pdev_rx_protocol_tag_stats(soc, pdev_id,
protocol_type);
return QDF_STATUS_SUCCESS;
}
@@ -897,7 +903,7 @@
/**
* cdp_vdev_config_for_nac_rssi(): To invoke dp callback for nac rssi config
* @soc: soc pointer
- * @vdev: vdev pointer
+ * @vdev_id: id of vdev
* @nac_cmd: specfies nac_rss config action add, del, list
* @bssid: Neighbour bssid
* @client_macaddr: Non-Associated client MAC
@@ -906,7 +912,7 @@
* Return: QDF_STATUS
*/
static inline QDF_STATUS cdp_vdev_config_for_nac_rssi(ol_txrx_soc_handle soc,
- struct cdp_vdev *vdev, enum cdp_nac_param_cmd nac_cmd,
+ uint8_t vdev_id, enum cdp_nac_param_cmd nac_cmd,
char *bssid, char *client_macaddr, uint8_t chan_num)
{
if (!soc || !soc->ops) {
@@ -920,21 +926,21 @@
!soc->ops->ctrl_ops->txrx_vdev_config_for_nac_rssi)
return QDF_STATUS_E_FAILURE;
- return soc->ops->ctrl_ops->txrx_vdev_config_for_nac_rssi(vdev,
+ return soc->ops->ctrl_ops->txrx_vdev_config_for_nac_rssi(soc, vdev_id,
nac_cmd, bssid, client_macaddr, chan_num);
}
/*
* cdp_vdev_get_neighbour_rssi(): To invoke dp callback to get rssi value of nac
* @soc: soc pointer
- * @vdev: vdev pointer
+ * @vdev_id: id of vdev
* @macaddr: Non-Associated client MAC
* @rssi: rssi
*
* Return: QDF_STATUS
*/
static inline QDF_STATUS cdp_vdev_get_neighbour_rssi(ol_txrx_soc_handle soc,
- struct cdp_vdev *vdev,
+ uint8_t vdev_id,
char *macaddr,
uint8_t *rssi)
{
@@ -949,7 +955,8 @@
!soc->ops->ctrl_ops->txrx_vdev_get_neighbour_rssi)
return QDF_STATUS_E_FAILURE;
- return soc->ops->ctrl_ops->txrx_vdev_get_neighbour_rssi(vdev, macaddr,
+ return soc->ops->ctrl_ops->txrx_vdev_get_neighbour_rssi(soc, vdev_id,
+ macaddr,
rssi);
}
#endif
@@ -959,13 +966,13 @@
* cdp_set_rx_flow_tag() - wrapper function to set the flow
* tag in CDP layer from cfg layer
* @soc: SOC TXRX handle
- * @pdev: CDP pdev pointer
+ * @pdev_id: id of CDP pdev pointer
* @flow_info: Flow 5-tuple, along with tag, if any, that needs to added/deleted
*
* Return: Success when add/del operation is successful, error otherwise
*/
static inline QDF_STATUS
-cdp_set_rx_flow_tag(ol_txrx_soc_handle soc, struct cdp_pdev *pdev,
+cdp_set_rx_flow_tag(ol_txrx_soc_handle soc, uint8_t pdev_id,
struct cdp_rx_flow_info *flow_info)
{
if (!soc || !soc->ops) {
@@ -978,20 +985,21 @@
!soc->ops->ctrl_ops->txrx_set_rx_flow_tag)
return QDF_STATUS_E_FAILURE;
- return soc->ops->ctrl_ops->txrx_set_rx_flow_tag(pdev, flow_info);
+ return soc->ops->ctrl_ops->txrx_set_rx_flow_tag(soc, pdev_id,
+ flow_info);
}
/**
* cdp_dump_rx_flow_tag_stats() - wrapper function to dump the flow
* tag statistics for given flow
* @soc: SOC TXRX handle
- * @pdev: CDP pdev pointer
+ * @pdev_id: id of CDP pdev
* @flow_info: Flow tuple for which we want to print the statistics
*
* Return: Success when flow is found and stats are printed, error otherwise
*/
static inline QDF_STATUS
-cdp_dump_rx_flow_tag_stats(ol_txrx_soc_handle soc, struct cdp_pdev *pdev,
+cdp_dump_rx_flow_tag_stats(ol_txrx_soc_handle soc, uint8_t pdev_id,
struct cdp_rx_flow_info *flow_info)
{
if (!soc || !soc->ops) {
@@ -1004,7 +1012,9 @@
!soc->ops->ctrl_ops->txrx_dump_rx_flow_tag_stats)
return QDF_STATUS_E_FAILURE;
- return soc->ops->ctrl_ops->txrx_dump_rx_flow_tag_stats(pdev, flow_info);
+ return soc->ops->ctrl_ops->txrx_dump_rx_flow_tag_stats(soc,
+ pdev_id,
+ flow_info);
}
#endif /* WLAN_SUPPORT_RX_FLOW_TAG */
#endif /* _CDP_TXRX_CTRL_H_ */
diff --git a/dp/inc/cdp_txrx_ops.h b/dp/inc/cdp_txrx_ops.h
index 5ae0a6b..779047b 100644
--- a/dp/inc/cdp_txrx_ops.h
+++ b/dp/inc/cdp_txrx_ops.h
@@ -539,7 +539,7 @@
uint32_t val);
int
(*txrx_update_filter_neighbour_peers)(
- struct cdp_vdev *vdev,
+ struct cdp_soc_t *soc, uint8_t vdev_id,
uint32_t cmd, uint8_t *macaddr);
/**
* @brief set the safemode of the device
@@ -643,7 +643,7 @@
void (*tx_flush_buffers)(struct cdp_vdev *vdev);
- int (*txrx_is_target_ar900b)(struct cdp_vdev *vdev);
+ int (*txrx_is_target_ar900b)(struct cdp_soc_t *soc_hdl);
void (*txrx_set_vdev_param)(struct cdp_vdev *vdev,
enum cdp_vdev_param_type param, uint32_t val);
@@ -655,11 +655,14 @@
* Set the reo destination ring no on which we will receive
* pkts for this radio.
*
- * @param pdev - the data physical device object
+ * @txrx_soc - soc handle
+ * @param pdev_id - id of physical device
+ * @return the reo destination ring number
* @param reo_dest_ring_num - value ranges between 1 - 4
*/
- void (*txrx_set_pdev_reo_dest)(
- struct cdp_pdev *pdev,
+ QDF_STATUS (*txrx_set_pdev_reo_dest)(
+ struct cdp_soc_t *txrx_soc,
+ uint8_t pdev_id,
enum cdp_host_reo_dest_ring reo_dest_ring_num);
/**
@@ -668,21 +671,26 @@
* Get the reo destination ring no on which we will receive
* pkts for this radio.
*
- * @param pdev - the data physical device object
+ * @txrx_soc - soc handle
+ * @param pdev_id - id of physical device
* @return the reo destination ring number
*/
enum cdp_host_reo_dest_ring (*txrx_get_pdev_reo_dest)(
- struct cdp_pdev *pdev);
+ struct cdp_soc_t *txrx_soc,
+ uint8_t pdev_id);
- int (*txrx_wdi_event_sub)(struct cdp_pdev *pdev, void *event_cb_sub,
- uint32_t event);
+ int (*txrx_wdi_event_sub)(struct cdp_soc_t *soc, uint8_t pdev_id,
+ wdi_event_subscribe *event_cb_sub,
+ uint32_t event);
- int (*txrx_wdi_event_unsub)(struct cdp_pdev *pdev, void *event_cb_sub,
- uint32_t event);
- int (*txrx_get_sec_type)(struct cdp_peer *peer, uint8_t sec_idx);
+ int (*txrx_wdi_event_unsub)(struct cdp_soc_t *soc, uint8_t pdev_id,
+ wdi_event_subscribe *event_cb_sub,
+ uint32_t event);
- void (*txrx_update_mgmt_txpow_vdev)(struct cdp_vdev *vdev,
- uint8_t subtype, uint8_t tx_power);
+ QDF_STATUS
+ (*txrx_update_mgmt_txpow_vdev)(struct cdp_soc_t *soc,
+ uint8_t vdev_id,
+ uint8_t subtype, uint8_t tx_power);
/**
* txrx_set_pdev_param() - callback to set pdev parameter
@@ -698,49 +706,58 @@
void * (*txrx_get_pldev)(struct cdp_pdev *pdev);
#ifdef ATH_SUPPORT_NAC_RSSI
- QDF_STATUS (*txrx_vdev_config_for_nac_rssi)(struct cdp_vdev *vdev,
- enum cdp_nac_param_cmd cmd, char *bssid, char *client_macaddr,
- uint8_t chan_num);
- QDF_STATUS (*txrx_vdev_get_neighbour_rssi)(struct cdp_vdev *vdev,
+ QDF_STATUS (*txrx_vdev_config_for_nac_rssi)(struct cdp_soc_t *cdp_soc,
+ uint8_t vdev_id,
+ enum cdp_nac_param_cmd cmd,
+ char *bssid,
+ char *client_macaddr,
+ uint8_t chan_num);
+
+ QDF_STATUS (*txrx_vdev_get_neighbour_rssi)(struct cdp_soc_t *cdp_soc,
+ uint8_t vdev_id,
char *macaddr,
uint8_t *rssi);
#endif
- void (*set_key)(struct cdp_peer *peer_handle,
- bool is_unicast, uint32_t *key);
+ QDF_STATUS
+ (*set_key)(struct cdp_soc_t *soc, uint8_t vdev_id, uint8_t *mac,
+ bool is_unicast, uint32_t *key);
uint32_t (*txrx_get_vdev_param)(struct cdp_vdev *vdev,
enum cdp_vdev_param_type param);
- int (*enable_peer_based_pktlog)(struct cdp_pdev
- *txrx_pdev_handle, char *macaddr, uint8_t enb_dsb);
+ int (*enable_peer_based_pktlog)(struct cdp_soc_t *cdp_soc,
+ uint8_t pdev_id,
+ uint8_t *macaddr, uint8_t enb_dsb);
- void (*calculate_delay_stats)(struct cdp_vdev *vdev, qdf_nbuf_t nbuf);
+ QDF_STATUS
+ (*calculate_delay_stats)(struct cdp_soc_t *cdp_soc,
+ uint8_t vdev_id, qdf_nbuf_t nbuf);
#ifdef WLAN_SUPPORT_RX_PROTOCOL_TYPE_TAG
QDF_STATUS (*txrx_update_pdev_rx_protocol_tag)(
- struct cdp_pdev *txrx_pdev_handle,
+ struct cdp_soc_t *soc, uint8_t pdev_id,
uint32_t protocol_mask, uint16_t protocol_type,
uint16_t tag);
#ifdef WLAN_SUPPORT_RX_TAG_STATISTICS
void (*txrx_dump_pdev_rx_protocol_tag_stats)(
- struct cdp_pdev *txrx_pdev_handle,
+ struct cdp_soc_t *soc, uint8_t pdev_id,
uint16_t protocol_type);
#endif /* WLAN_SUPPORT_RX_TAG_STATISTICS */
#endif /* WLAN_SUPPORT_RX_PROTOCOL_TYPE_TAG */
#ifdef WLAN_SUPPORT_RX_FLOW_TAG
QDF_STATUS (*txrx_set_rx_flow_tag)(
- struct cdp_pdev *txrx_pdev_handle,
+ struct cdp_soc_t *cdp_soc, uint8_t pdev_id,
struct cdp_rx_flow_info *flow_info);
QDF_STATUS (*txrx_dump_rx_flow_tag_stats)(
- struct cdp_pdev *txrx_pdev_handle,
+ struct cdp_soc_t *cdp_soc, uint8_t pdev_id,
struct cdp_rx_flow_info *flow_info);
#endif /* WLAN_SUPPORT_RX_FLOW_TAG */
#ifdef QCA_MULTIPASS_SUPPORT
- void (*txrx_peer_set_vlan_id)(ol_txrx_soc_handle soc,
- struct cdp_vdev *vdev, uint8_t *peer_mac,
+ void (*txrx_peer_set_vlan_id)(struct cdp_soc_t *cdp_soc,
+ uint8_t vdev_id, uint8_t *peer_mac,
uint16_t vlan_id);
#endif
#if defined(WLAN_TX_PKT_CAPTURE_ENH) || defined(WLAN_RX_PKT_CAPTURE_ENH)
QDF_STATUS (*txrx_update_peer_pkt_capture_params)(
- struct cdp_pdev *txrx_pdev_handle,
+ ol_txrx_soc_handle soc, uint8_t pdev_id,
bool is_rx_pkt_cap_enable, bool is_tx_pkt_cap_enable,
uint8_t *peer_mac);
#endif /* WLAN_TX_PKT_CAPTURE_ENH || WLAN_RX_PKT_CAPTURE_ENH */
diff --git a/dp/wifi3.0/dp_internal.h b/dp/wifi3.0/dp_internal.h
index 74015b9..d3a547a 100644
--- a/dp/wifi3.0/dp_internal.h
+++ b/dp/wifi3.0/dp_internal.h
@@ -1028,8 +1028,11 @@
uint32_t *rx_pn);
void *dp_get_pdev_for_mac_id(struct dp_soc *soc, uint32_t mac_id);
-void dp_set_michael_key(struct cdp_peer *peer_handle,
- bool is_unicast, uint32_t *key);
+
+QDF_STATUS
+dp_set_michael_key(struct cdp_soc_t *soc, uint8_t vdev_id,
+ uint8_t *peer_mac,
+ bool is_unicast, uint32_t *key);
/**
* dp_check_pdev_exists() - Validate pdev before use
@@ -1377,13 +1380,13 @@
uint32_t stats_type_upload_mask,
uint8_t mac_id);
-int dp_wdi_event_unsub(struct cdp_pdev *txrx_pdev_handle,
- void *event_cb_sub_handle,
- uint32_t event);
+int dp_wdi_event_unsub(struct cdp_soc_t *soc, uint8_t pdev_id,
+ wdi_event_subscribe *event_cb_sub_handle,
+ uint32_t event);
-int dp_wdi_event_sub(struct cdp_pdev *txrx_pdev_handle,
- void *event_cb_sub_handle,
- uint32_t event);
+int dp_wdi_event_sub(struct cdp_soc_t *soc, uint8_t pdev_id,
+ wdi_event_subscribe *event_cb_sub_handle,
+ uint32_t event);
void dp_wdi_event_handler(enum WDI_EVENT event, struct dp_soc *soc,
void *data, u_int16_t peer_id,
@@ -1418,16 +1421,16 @@
QDF_STATUS dp_peer_stats_notify(struct dp_pdev *pdev, struct dp_peer *peer);
#else
-static inline int dp_wdi_event_unsub(struct cdp_pdev *txrx_pdev_handle,
- void *event_cb_sub_handle,
- uint32_t event)
+static inline int dp_wdi_event_unsub(struct cdp_soc_t *soc, uint8_t pdev_id,
+ wdi_event_subscribe *event_cb_sub_handle,
+ uint32_t event)
{
return 0;
}
-static inline int dp_wdi_event_sub(struct cdp_pdev *txrx_pdev_handle,
- void *event_cb_sub_handle,
- uint32_t event)
+static inline int dp_wdi_event_sub(struct cdp_soc_t *soc, uint8_t pdev_id,
+ wdi_event_subscribe *event_cb_sub_handle,
+ uint32_t event)
{
return 0;
}
diff --git a/dp/wifi3.0/dp_main.c b/dp/wifi3.0/dp_main.c
index e51b4c0..0ee6218 100644
--- a/dp/wifi3.0/dp_main.c
+++ b/dp/wifi3.0/dp_main.c
@@ -5943,30 +5943,41 @@
/*
* dp_set_pdev_reo_dest() - set the reo destination ring for this pdev
- * @pdev_handle: physical device object
+ * @txrx_soc: cdp soc handle
+ * @pdev_id: id of physical device object
* @val: reo destination ring index (1 - 4)
*
- * Return: void
+ * Return: QDF_STATUS
*/
-static void dp_set_pdev_reo_dest(struct cdp_pdev *pdev_handle,
- enum cdp_host_reo_dest_ring val)
+static QDF_STATUS
+dp_set_pdev_reo_dest(struct cdp_soc_t *txrx_soc, uint8_t pdev_id,
+ enum cdp_host_reo_dest_ring val)
{
- struct dp_pdev *pdev = (struct dp_pdev *)pdev_handle;
+ struct dp_pdev *pdev =
+ dp_get_pdev_from_soc_pdev_id_wifi3((struct dp_soc *)txrx_soc,
+ pdev_id);
- if (pdev)
+ if (pdev) {
pdev->reo_dest = val;
+ return QDF_STATUS_SUCCESS;
+ }
+
+ return QDF_STATUS_E_FAILURE;
}
/*
* dp_get_pdev_reo_dest() - get the reo destination for this pdev
- * @pdev_handle: physical device object
+ * @txrx_soc: cdp soc handle
+ * @pdev_id: id of physical device object
*
* Return: reo destination ring index
*/
static enum cdp_host_reo_dest_ring
-dp_get_pdev_reo_dest(struct cdp_pdev *pdev_handle)
+dp_get_pdev_reo_dest(struct cdp_soc_t *txrx_soc, uint8_t pdev_id)
{
- struct dp_pdev *pdev = (struct dp_pdev *)pdev_handle;
+ struct dp_pdev *pdev =
+ dp_get_pdev_from_soc_pdev_id_wifi3((struct dp_soc *)txrx_soc,
+ pdev_id);
if (pdev)
return pdev->reo_dest;
@@ -5996,20 +6007,29 @@
/*
* dp_update_filter_neighbour_peers() - set neighbour peers(nac clients)
* address for smart mesh filtering
- * @vdev_handle: virtual device object
+ * @txrx_soc: cdp soc handle
+ * @vdev_id: id of virtual device object
* @cmd: Add/Del command
* @macaddr: nac client mac address
*
- * Return: void
+ * Return: success/failure
*/
-static int dp_update_filter_neighbour_peers(struct cdp_vdev *vdev_handle,
+static int dp_update_filter_neighbour_peers(struct cdp_soc_t *soc,
+ uint8_t vdev_id,
uint32_t cmd, uint8_t *macaddr)
{
- struct dp_vdev *vdev = (struct dp_vdev *)vdev_handle;
- struct dp_pdev *pdev = vdev->pdev;
+ struct dp_pdev *pdev;
struct dp_neighbour_peer *peer = NULL;
+ struct dp_vdev *vdev =
+ dp_get_vdev_from_soc_vdev_id_wifi3((struct dp_soc *)soc,
+ vdev_id);
- if (!macaddr)
+ if (!vdev || !macaddr)
+ goto fail0;
+
+ pdev = vdev->pdev;
+
+ if (!pdev)
goto fail0;
/* Store address of NAC (neighbour peer) which will be checked
@@ -6077,16 +6097,31 @@
/*
* dp_get_sec_type() - Get the security type
- * @peer: Datapath peer handle
+ * @soc: soc handle
+ * @vdev_id: id of dp handle
+ * @peer_mac: mac of datapath PEER handle
* @sec_idx: Security id (mcast, ucast)
*
* return sec_type: Security type
*/
-static int dp_get_sec_type(struct cdp_peer *peer, uint8_t sec_idx)
+static int dp_get_sec_type(struct cdp_soc_t *soc, uint8_t vdev_id,
+ uint8_t *peer_mac, uint8_t sec_idx)
{
- struct dp_peer *dpeer = (struct dp_peer *)peer;
+ int sec_type = 0;
+ struct dp_peer *peer = dp_peer_find_hash_find((struct dp_soc *)soc,
+ peer_mac, 0, vdev_id);
- return dpeer->security[sec_idx].sec_type;
+ if (!peer || peer->delete_in_progress) {
+ QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_DEBUG,
+ "%s: Peer is NULL!\n", __func__);
+ goto fail;
+ }
+
+ sec_type = peer->security[sec_idx].sec_type;
+fail:
+ if (peer)
+ dp_peer_unref_delete(peer);
+ return sec_type;
}
/*
@@ -9377,27 +9412,36 @@
return status;
}
-static QDF_STATUS dp_config_for_nac_rssi(struct cdp_vdev *vdev_handle,
- enum cdp_nac_param_cmd cmd, char *bssid, char *client_macaddr,
- uint8_t chan_num)
+static QDF_STATUS
+dp_config_for_nac_rssi(struct cdp_soc_t *cdp_soc,
+ uint8_t vdev_id,
+ enum cdp_nac_param_cmd cmd, char *bssid,
+ char *client_macaddr,
+ uint8_t chan_num)
{
+ struct dp_soc *soc = (struct dp_soc *)cdp_soc;
+ struct dp_vdev *vdev =
+ dp_get_vdev_from_soc_vdev_id_wifi3(soc,
+ vdev_id);
+ struct dp_pdev *pdev;
- struct dp_vdev *vdev = (struct dp_vdev *)vdev_handle;
- struct dp_pdev *pdev = (struct dp_pdev *)vdev->pdev;
- struct dp_soc *soc = (struct dp_soc *) vdev->pdev->soc;
+ if (!vdev)
+ return QDF_STATUS_E_FAILURE;
+ pdev = (struct dp_pdev *)vdev->pdev;
pdev->nac_rssi_filtering = 1;
/* Store address of NAC (neighbour peer) which will be checked
* against TA of received packets.
*/
if (cmd == CDP_NAC_PARAM_ADD) {
- dp_update_filter_neighbour_peers(vdev_handle, DP_NAC_PARAM_ADD,
- client_macaddr);
+ dp_update_filter_neighbour_peers(cdp_soc, vdev->vdev_id,
+ DP_NAC_PARAM_ADD,
+ (uint8_t *)client_macaddr);
} else if (cmd == CDP_NAC_PARAM_DEL) {
- dp_update_filter_neighbour_peers(vdev_handle,
+ dp_update_filter_neighbour_peers(cdp_soc, vdev->vdev_id,
DP_NAC_PARAM_DEL,
- client_macaddr);
+ (uint8_t *)client_macaddr);
}
if (soc->cdp_soc.ol_ops->config_bssid_in_fw_for_nac_rssi)
@@ -9412,21 +9456,29 @@
/**
* dp_enable_peer_based_pktlog() - Set Flag for peer based filtering
* for pktlog
- * @txrx_pdev_handle: cdp_pdev handle
+ * @soc: cdp_soc handle
+ * @pdev_id: id of dp pdev handle
+ * @mac_addr: Peer mac address
* @enb_dsb: Enable or disable peer based filtering
*
* Return: QDF_STATUS
*/
static int
-dp_enable_peer_based_pktlog(
- struct cdp_pdev *txrx_pdev_handle,
- char *mac_addr, uint8_t enb_dsb)
+dp_enable_peer_based_pktlog(struct cdp_soc_t *soc, uint8_t pdev_id,
+ uint8_t *mac_addr, uint8_t enb_dsb)
{
struct dp_peer *peer;
- struct dp_pdev *pdev = (struct dp_pdev *)txrx_pdev_handle;
+ struct dp_pdev *pdev =
+ dp_get_pdev_from_soc_pdev_id_wifi3((struct dp_soc *)soc,
+ pdev_id);
- peer = (struct dp_peer *)dp_find_peer_by_addr(txrx_pdev_handle,
- mac_addr);
+ if (!pdev) {
+ dp_err("Invalid Pdev for pdev_id %d", pdev_id);
+ return QDF_STATUS_E_FAILURE;
+ }
+
+ peer = (struct dp_peer *)dp_find_peer_by_addr((struct cdp_pdev *)pdev,
+ mac_addr);
if (!peer) {
dp_err("Invalid Peer");
@@ -9443,13 +9495,14 @@
/**
* dp_dump_pdev_rx_protocol_tag_stats - dump the number of packets tagged for
* given protocol type (RX_PROTOCOL_TAG_ALL indicates for all protocol)
- * @pdev_handle: cdp_pdev handle
+ * @soc: cdp_soc handle
+ * @pdev_id: id of cdp_pdev handle
* @protocol_type: protocol type for which stats should be displayed
*
* Return: none
*/
static inline void
-dp_dump_pdev_rx_protocol_tag_stats(struct cdp_pdev *pdev_handle,
+dp_dump_pdev_rx_protocol_tag_stats(struct cdp_soc_t *soc, uint8_t pdev_id,
uint16_t protocol_type)
{
}
@@ -9459,7 +9512,8 @@
/**
* dp_update_pdev_rx_protocol_tag - Add/remove a protocol tag that should be
* applied to the desired protocol type packets
- * @txrx_pdev_handle: cdp_pdev handle
+ * @soc: soc handle
+ * @pdev_id: id of cdp_pdev handle
* @enable_rx_protocol_tag - bitmask that indicates what protocol types
* are enabled for tagging. zero indicates disable feature, non-zero indicates
* enable feature
@@ -9469,7 +9523,7 @@
* Return: Success
*/
static inline QDF_STATUS
-dp_update_pdev_rx_protocol_tag(struct cdp_pdev *pdev_handle,
+dp_update_pdev_rx_protocol_tag(struct cdp_soc_t *soc, uint8_t pdev_id,
uint32_t enable_rx_protocol_tag,
uint16_t protocol_type,
uint16_t tag)
@@ -9481,13 +9535,14 @@
#ifndef WLAN_SUPPORT_RX_FLOW_TAG
/**
* dp_set_rx_flow_tag - add/delete a flow
- * @pdev_handle: cdp_pdev handle
+ * @soc: soc handle
+ * @pdev_id: id of cdp_pdev handle
* @flow_info: flow tuple that is to be added to/deleted from flow search table
*
* Return: Success
*/
static inline QDF_STATUS
-dp_set_rx_flow_tag(struct cdp_pdev *pdev_handle,
+dp_set_rx_flow_tag(struct cdp_soc_t *cdp_soc, uint8_t pdev_id,
struct cdp_rx_flow_info *flow_info)
{
return QDF_STATUS_SUCCESS;
@@ -9495,13 +9550,14 @@
/**
* dp_dump_rx_flow_tag_stats - dump the number of packets tagged for
* given flow 5-tuple
- * @pdev_handle: cdp_pdev handle
+ * @cdp_soc: soc handle
+ * @pdev_id: id of cdp_pdev handle
* @flow_info: flow 5-tuple for which stats should be displayed
*
* Return: Success
*/
static inline QDF_STATUS
-dp_dump_rx_flow_tag_stats(struct cdp_pdev *pdev_handle,
+dp_dump_rx_flow_tag_stats(struct cdp_soc_t *cdp_soc, uint8_t pdev_id,
struct cdp_rx_flow_info *flow_info)
{
return QDF_STATUS_SUCCESS;
diff --git a/dp/wifi3.0/dp_peer.c b/dp/wifi3.0/dp_peer.c
index a4eb54a..86e3d79 100644
--- a/dp/wifi3.0/dp_peer.c
+++ b/dp/wifi3.0/dp_peer.c
@@ -3511,20 +3511,32 @@
}
}
-void dp_set_michael_key(struct cdp_peer *peer_handle,
- bool is_unicast, uint32_t *key)
+QDF_STATUS
+dp_set_michael_key(struct cdp_soc_t *soc,
+ uint8_t vdev_id,
+ uint8_t *peer_mac,
+ bool is_unicast, uint32_t *key)
{
- struct dp_peer *peer = (struct dp_peer *)peer_handle;
+ QDF_STATUS status = QDF_STATUS_SUCCESS;
uint8_t sec_index = is_unicast ? 1 : 0;
+ struct dp_peer *peer = dp_peer_find_hash_find((struct dp_soc *)soc,
+ peer_mac, 0, vdev_id);
- if (!peer) {
+ if (!peer || peer->delete_in_progress) {
QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_ERROR,
"peer not found ");
- return;
+ status = QDF_STATUS_E_FAILURE;
+ goto fail;
}
qdf_mem_copy(&peer->security[sec_index].michael_key[0],
key, IEEE80211_WEP_MICLEN);
+
+fail:
+ if (peer)
+ dp_peer_unref_delete(peer);
+
+ return status;
}
bool dp_peer_find_by_id_valid(struct dp_soc *soc, uint16_t peer_id)
diff --git a/dp/wifi3.0/dp_tx.c b/dp/wifi3.0/dp_tx.c
index 7f39fcf..736728e 100644
--- a/dp/wifi3.0/dp_tx.c
+++ b/dp/wifi3.0/dp_tx.c
@@ -2075,7 +2075,8 @@
/**
* dp_tx_send_exception() - Transmit a frame on a given VAP in exception path
- * @vap_dev: DP vdev handle
+ * @soc: DP soc handle
+ * @vdev_id: id of DP vdev handle
* @nbuf: skb
* @tx_exc_metadata: Handle that holds exception path meta data
*
@@ -2086,13 +2087,18 @@
* nbuf when it fails to send
*/
qdf_nbuf_t
-dp_tx_send_exception(struct cdp_vdev *vap_dev, qdf_nbuf_t nbuf,
+dp_tx_send_exception(struct cdp_soc_t *soc, uint8_t vdev_id, qdf_nbuf_t nbuf,
struct cdp_tx_exception_metadata *tx_exc_metadata)
{
qdf_ether_header_t *eh = NULL;
- struct dp_vdev *vdev = (struct dp_vdev *) vap_dev;
+ struct dp_vdev *vdev =
+ dp_get_vdev_from_soc_vdev_id_wifi3((struct dp_soc *)soc,
+ vdev_id);
struct dp_tx_msdu_info_s msdu_info;
+ if (qdf_unlikely(!vdev))
+ goto fail;
+
qdf_mem_zero(&msdu_info, sizeof(msdu_info));
if (!tx_exc_metadata)
diff --git a/dp/wifi3.0/dp_wdi_event.c b/dp/wifi3.0/dp_wdi_event.c
index ec230fe..91614b3 100644
--- a/dp/wifi3.0/dp_wdi_event.c
+++ b/dp/wifi3.0/dp_wdi_event.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2017-2019 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2017-2020 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
@@ -149,7 +149,8 @@
/*
* dp_wdi_event_sub() - Subscribe WDI event
- * @txrx_pdev_handle: cdp_pdev handle
+ * @soc: soc handle
+ * @pdev_id: id of pdev
* @event_cb_sub_handle: subcribe evnet handle
* @event: Event to be subscribe
*
@@ -157,13 +158,15 @@
*/
int
dp_wdi_event_sub(
- struct cdp_pdev *txrx_pdev_handle,
- void *event_cb_sub_handle,
+ struct cdp_soc_t *soc, uint8_t pdev_id,
+ wdi_event_subscribe *event_cb_sub_handle,
uint32_t event)
{
uint32_t event_index;
wdi_event_subscribe *wdi_sub;
- struct dp_pdev *txrx_pdev = (struct dp_pdev *)txrx_pdev_handle;
+ struct dp_pdev *txrx_pdev =
+ dp_get_pdev_from_soc_pdev_id_wifi3((struct dp_soc *)soc,
+ pdev_id);
wdi_event_subscribe *event_cb_sub =
(wdi_event_subscribe *) event_cb_sub_handle;
@@ -206,7 +209,8 @@
/*
* dp_wdi_event_unsub() - WDI event unsubscribe
- * @txrx_pdev_handle: cdp_pdev handle
+ * @soc: soc handle
+ * @pdev_id: id of pdev
* @event_cb_sub_handle: subscribed event handle
* @event: Event to be unsubscribe
*
@@ -215,18 +219,20 @@
*/
int
dp_wdi_event_unsub(
- struct cdp_pdev *txrx_pdev_handle,
- void *event_cb_sub_handle,
+ struct cdp_soc_t *soc, uint8_t pdev_id,
+ wdi_event_subscribe *event_cb_sub_handle,
uint32_t event)
{
uint32_t event_index = event - WDI_EVENT_BASE;
- struct dp_pdev *txrx_pdev = (struct dp_pdev *)txrx_pdev_handle;
+ struct dp_pdev *txrx_pdev =
+ dp_get_pdev_from_soc_pdev_id_wifi3((struct dp_soc *)soc,
+ pdev_id);
wdi_event_subscribe *event_cb_sub =
(wdi_event_subscribe *) event_cb_sub_handle;
- if (!event_cb_sub) {
+ if (!txrx_pdev || !event_cb_sub) {
QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_ERROR,
- "Invalid callback in %s", __func__);
+ "Invalid callback or pdev in %s", __func__);
return -EINVAL;
}