qcacmn: Modify set 2 of ctrl_ops in dp to for umac-dp decoupling

Change set 2 of 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: I3f180c9c360d564f0b229b447074ad23b7c0a737
This commit is contained in:
Pavankumar Nandeshwar
2019-09-30 18:43:03 +05:30
committed by nshrivas
parent e6f443f27a
commit 0ce3870654
18 changed files with 759 additions and 1564 deletions

View File

@@ -127,40 +127,6 @@ cdp_soc_attach_target(ol_txrx_soc_handle soc)
} }
static inline int
cdp_soc_get_nss_cfg(ol_txrx_soc_handle soc)
{
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->cmn_drv_ops ||
!soc->ops->cmn_drv_ops->txrx_soc_get_nss_cfg)
return 0;
return soc->ops->cmn_drv_ops->txrx_soc_get_nss_cfg(soc);
}
static inline void
cdp_soc_set_nss_cfg(ol_txrx_soc_handle soc, uint32_t config)
{
if (!soc || !soc->ops) {
QDF_TRACE(QDF_MODULE_ID_CDP, QDF_TRACE_LEVEL_DEBUG,
"%s: Invalid Instance:", __func__);
QDF_BUG(0);
return;
}
if (!soc->ops->cmn_drv_ops ||
!soc->ops->cmn_drv_ops->txrx_soc_set_nss_cfg)
return;
soc->ops->cmn_drv_ops->txrx_soc_set_nss_cfg(soc, config);
}
static inline struct cdp_vdev * static inline struct cdp_vdev *
cdp_vdev_attach(ol_txrx_soc_handle soc, uint8_t pdev_id, cdp_vdev_attach(ol_txrx_soc_handle soc, uint8_t pdev_id,
uint8_t *vdev_mac_addr, uint8_t vdev_id, uint8_t *vdev_mac_addr, uint8_t vdev_id,
@@ -820,12 +786,13 @@ cdp_set_privacy_filters(ol_txrx_soc_handle soc, uint8_t vdev_id,
} }
static inline int static inline int
cdp_set_monitor_filter(ol_txrx_soc_handle soc, struct cdp_pdev *pdev, cdp_set_monitor_filter(ol_txrx_soc_handle soc, uint8_t pdev_id,
struct cdp_monitor_filter *filter_val) struct cdp_monitor_filter *filter_val)
{ {
if (soc->ops->mon_ops->txrx_set_advance_monitor_filter) if (soc->ops->mon_ops->txrx_set_advance_monitor_filter)
return soc->ops->mon_ops->txrx_set_advance_monitor_filter(pdev, return soc->ops->mon_ops->txrx_set_advance_monitor_filter(soc,
filter_val); pdev_id,
filter_val);
return 0; return 0;
} }
@@ -944,24 +911,6 @@ cdp_peer_unmap_sync_cb_set(ol_txrx_soc_handle soc,
unmap_resp_cb); unmap_resp_cb);
} }
static inline int cdp_get_tx_pending(ol_txrx_soc_handle soc,
struct cdp_pdev *pdev)
{
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->cmn_drv_ops ||
!soc->ops->cmn_drv_ops->txrx_get_tx_pending)
return 0;
return soc->ops->cmn_drv_ops->txrx_get_tx_pending(pdev);
}
/* /*
* cdp_data_tx_cb_set(): set the callback for non standard tx * cdp_data_tx_cb_set(): set the callback for non standard tx
* @soc - datapath soc handle * @soc - datapath soc handle
@@ -1590,56 +1539,6 @@ static inline void cdp_set_pdev_dscp_tid_map(ol_txrx_soc_handle soc,
map_id, tos, tid); map_id, tos, tid);
} }
/**
* cdp_hmmc_tid_override_en(): Function to enable hmmc tid override.
* @soc : soc handle
* @pdev: pdev handle
* @val: hmmc-dscp flag value
*
* Return: void
*/
static inline void cdp_hmmc_tid_override_en(ol_txrx_soc_handle soc,
struct cdp_pdev *pdev, bool val)
{
if (!soc || !soc->ops) {
QDF_TRACE(QDF_MODULE_ID_CDP, QDF_TRACE_LEVEL_DEBUG,
"%s: Invalid Instance:", __func__);
QDF_BUG(0);
return;
}
if (!soc->ops->cmn_drv_ops ||
!soc->ops->cmn_drv_ops->hmmc_tid_override_en)
return;
soc->ops->cmn_drv_ops->hmmc_tid_override_en(pdev, val);
}
/**
* cdp_set_hmmc_tid_val(): Function to set hmmc tid value.
* @soc : soc handle
* @pdev: pdev handle
* @tid: tid value
*
* Return: void
*/
static inline void cdp_set_hmmc_tid_val(ol_txrx_soc_handle soc,
struct cdp_pdev *pdev, uint8_t tid)
{
if (!soc || !soc->ops) {
QDF_TRACE(QDF_MODULE_ID_CDP, QDF_TRACE_LEVEL_DEBUG,
"%s: Invalid Instance:", __func__);
QDF_BUG(0);
return;
}
if (!soc->ops->cmn_drv_ops ||
!soc->ops->cmn_drv_ops->set_hmmc_tid_val)
return;
soc->ops->cmn_drv_ops->set_hmmc_tid_val(pdev, tid);
}
/** /**
* cdp_flush_cache_rx_queue() - flush cache rx queue frame * cdp_flush_cache_rx_queue() - flush cache rx queue frame
* *
@@ -2060,89 +1959,6 @@ cdp_tx_send(ol_txrx_soc_handle soc, uint8_t vdev_id, qdf_nbuf_t nbuf)
soc->ops->cmn_drv_ops->tx_send(soc, vdev_id, nbuf); soc->ops->cmn_drv_ops->tx_send(soc, vdev_id, nbuf);
} }
/*
* cdp_get_pdev_id_frm_pdev() - return pdev_id from pdev
* @soc: opaque soc handle
* @pdev: data path pdev handle
*
* Return: pdev_id
*/
static inline
uint8_t cdp_get_pdev_id_frm_pdev(ol_txrx_soc_handle soc,
struct cdp_pdev *pdev)
{
if (soc->ops->cmn_drv_ops->txrx_get_pdev_id_frm_pdev)
return soc->ops->cmn_drv_ops->txrx_get_pdev_id_frm_pdev(pdev);
return 0;
}
/*
* cdp_get_vow_config_frm_pdev() - return carrier_vow_config from pdev
* @soc: opaque soc handle
* @pdev: data path pdev handle
*
* Return: carrier_vow_config
*/
static inline
bool cdp_get_vow_config_frm_pdev(ol_txrx_soc_handle soc,
struct cdp_pdev *pdev)
{
if (soc->ops->cmn_drv_ops->txrx_get_vow_config_frm_pdev)
return soc->ops->cmn_drv_ops->txrx_get_vow_config_frm_pdev(
pdev);
return 0;
}
/**
* cdp_pdev_set_chan_noise_floor() - Set channel noise floor to DP layer
* @soc: opaque soc handle
* @pdev: data path pdev handle
* @chan_noise_floor: Channel Noise Floor (in dbM) obtained from control path
*
* Return: None
*/
static inline
void cdp_pdev_set_chan_noise_floor(ol_txrx_soc_handle soc,
struct cdp_pdev *pdev,
int16_t chan_noise_floor)
{
if (soc->ops->cmn_drv_ops->txrx_pdev_set_chan_noise_floor)
return soc->ops->cmn_drv_ops->txrx_pdev_set_chan_noise_floor(
pdev, chan_noise_floor);
}
/**
* cdp_set_nac() - set nac
* @soc: opaque soc handle
* @vdev_id: id of vdev handle
* @peer_mac: mac of data path peer handle
*
*/
static inline
void cdp_set_nac(ol_txrx_soc_handle soc, uint8_t vdev_id, uint8_t *peer_mac)
{
if (soc->ops->cmn_drv_ops->txrx_set_nac)
soc->ops->cmn_drv_ops->txrx_set_nac(soc, vdev_id, peer_mac);
}
/**
* cdp_set_pdev_tx_capture() - set pdev tx_capture
* @soc: opaque soc handle
* @pdev: data path pdev handle
* @val: value of pdev_tx_capture
*
* Return: status: 0 - Success, non-zero: Failure
*/
static inline
QDF_STATUS cdp_set_pdev_tx_capture(ol_txrx_soc_handle soc,
struct cdp_pdev *pdev, int val)
{
if (soc->ops->cmn_drv_ops->txrx_set_pdev_tx_capture)
return soc->ops->cmn_drv_ops->txrx_set_pdev_tx_capture(pdev,
val);
return QDF_STATUS_SUCCESS;
}
/** /**
* cdp_set_pdev_pcp_tid_map() - set pdev pcp-tid-map * cdp_set_pdev_pcp_tid_map() - set pdev pcp-tid-map
* @soc: opaque soc handle * @soc: opaque soc handle
@@ -2174,37 +1990,6 @@ QDF_STATUS cdp_set_pdev_pcp_tid_map(ol_txrx_soc_handle soc,
pcp, tid); pcp, tid);
} }
/**
* cdp_set_pdev_pcp_tidmap_prty() - set pdev tidmap priority
* @soc: opaque soc handle
* @pdev: data path pdev handle
* @val: priority value
*
* This API is used to configure the tidmap priority for a pdev.
* The tidmap priority decides which mapping, namely DSCP-TID, SVLAN_PCP-TID,
* CVLAN_PCP-TID will be used.
*
* Return: QDF_STATUS_SUCCESS if value set successfully
* QDF_STATUS_E_INVAL false if error
*/
static inline
QDF_STATUS cdp_set_pdev_tidmap_prty(ol_txrx_soc_handle soc,
struct cdp_pdev *pdev_handle,
uint32_t val)
{
if (!soc || !soc->ops) {
QDF_TRACE(QDF_MODULE_ID_CDP, QDF_TRACE_LEVEL_DEBUG,
"%s: Invalid Instance", __func__);
return QDF_STATUS_E_INVAL;
}
if (!soc->ops->cmn_drv_ops ||
!soc->ops->cmn_drv_ops->set_pdev_tidmap_prty)
return QDF_STATUS_E_INVAL;
return soc->ops->cmn_drv_ops->set_pdev_tidmap_prty(pdev_handle, val);
}
/** /**
* cdp_get_peer_mac_from_peer_id() - get peer mac addr from peer id * cdp_get_peer_mac_from_peer_id() - get peer mac addr from peer id
* @soc: opaque soc handle * @soc: opaque soc handle
@@ -2643,70 +2428,6 @@ QDF_STATUS cdp_set_vdev_pcp_tid_map(ol_txrx_soc_handle soc,
pcp, tid); pcp, tid);
} }
/**
* cdp_set_vdev_tidmap_tbl_id() - set vdev tidmap table id
*
* @soc: opaque soc handle
* @vdev: data path vdev handle
* @mapid: value of mapid
*
* This API is used to configure the table-id of the tid-mapping for a vdev.
* Table '0' is for using the pdev's pcp-tid mapping and '1' is for using
* the vdev's pcp-tid mapping.
*
* Return: QDF_STATUS_SUCCESS if value set successfully
* QDF_STATUS_E_INVAL false if error
*/
static inline
QDF_STATUS cdp_set_vdev_tidmap_tbl_id(ol_txrx_soc_handle soc,
struct cdp_vdev *vdev_handle,
uint8_t mapid)
{
if (!soc || !soc->ops) {
QDF_TRACE(QDF_MODULE_ID_CDP, QDF_TRACE_LEVEL_DEBUG,
"%s: Invalid Instance", __func__);
return QDF_STATUS_E_INVAL;
}
if (!soc->ops->cmn_drv_ops ||
!soc->ops->cmn_drv_ops->set_vdev_tidmap_tbl_id)
return QDF_STATUS_E_INVAL;
return soc->ops->cmn_drv_ops->set_vdev_tidmap_tbl_id(vdev_handle,
mapid);
}
/**
* cdp_set_vdev_tidmap_prty() - set vdev tidmap priority
* @soc: opaque soc handle
* @vdev: data path vdev handle
* @prio: tidmap priority value
*
* This API is used to configure the tidmap priority for a vdev.
* The tidmap priority decides which mapping, namely DSCP-TID, SVLAN_PCP-TID,
* CVLAN_PCP-TID will be used.
* The vdev tidmap priority will be used only when the tidmap_tbl_id is '1'.
*
* Return: QDF_STATUS_SUCCESS if value set successfully
* QDF_STATUS_E_INVAL false if error
*/
static inline
QDF_STATUS cdp_set_vdev_tidmap_prty(ol_txrx_soc_handle soc,
struct cdp_vdev *vdev_handle, uint8_t prio)
{
if (!soc || !soc->ops) {
QDF_TRACE(QDF_MODULE_ID_CDP, QDF_TRACE_LEVEL_DEBUG,
"%s: Invalid Instance", __func__);
return QDF_STATUS_E_INVAL;
}
if (!soc->ops->cmn_drv_ops ||
!soc->ops->cmn_drv_ops->set_vdev_tidmap_prty)
return QDF_STATUS_E_INVAL;
return soc->ops->cmn_drv_ops->set_vdev_tidmap_prty(vdev_handle, prio);
}
/** /**
* cdp_tx_send_exc() - Transmit a frame on a given vdev in exception path * cdp_tx_send_exc() - Transmit a frame on a given vdev in exception path
* *

View File

@@ -77,13 +77,13 @@ void *dp_soc_init_wifi3(struct cdp_soc_t *soc,
HTC_HANDLE htc_handle, qdf_device_t qdf_osdev, HTC_HANDLE htc_handle, qdf_device_t qdf_osdev,
struct ol_if_ops *ol_ops, uint16_t device_id); struct ol_if_ops *ol_ops, uint16_t device_id);
#else #else
static inline static inline struct cdp_soc_t *
struct cdp_soc_t *dp_soc_attach_wifi3(struct cdp_ctrl_objmgr_psoc *ctrl_psoc, dp_soc_attach_wifi3(struct cdp_ctrl_objmgr_psoc *ctrl_psoc,
struct hif_opaque_softc *hif_handle, struct hif_opaque_softc *hif_handle,
HTC_HANDLE htc_handle, HTC_HANDLE htc_handle,
qdf_device_t qdf_osdev, qdf_device_t qdf_osdev,
struct ol_if_ops *ol_ops, struct ol_if_ops *ol_ops,
uint16_t device_id) uint16_t device_id)
{ {
return NULL; return NULL;
} }
@@ -99,10 +99,13 @@ void *dp_soc_init_wifi3(struct cdp_soc_t *soc,
} }
#endif /* QCA_WIFI_QCA8074 */ #endif /* QCA_WIFI_QCA8074 */
static inline ol_txrx_soc_handle cdp_soc_attach( static inline
u_int16_t devid, void *hif_handle, void *psoc, ol_txrx_soc_handle cdp_soc_attach(u_int16_t devid,
HTC_HANDLE htc_handle, qdf_device_t qdf_dev, struct hif_opaque_softc *hif_handle,
struct ol_if_ops *dp_ol_if_ops) struct cdp_ctrl_objmgr_psoc *psoc,
HTC_HANDLE htc_handle,
qdf_device_t qdf_dev,
struct ol_if_ops *dp_ol_if_ops)
{ {
switch (devid) { switch (devid) {
case LITHIUM_DP: /*FIXME Add lithium devide IDs */ case LITHIUM_DP: /*FIXME Add lithium devide IDs */

View File

@@ -774,12 +774,12 @@ typedef QDF_STATUS(*ol_txrx_get_key_fp)(void *osif_dev, uint8_t *key_buf, uint8_
* @osif_dev - the virtual device's OS shim object * @osif_dev - the virtual device's OS shim object
* @list_head - poniter to head of receive packet queue to decap * @list_head - poniter to head of receive packet queue to decap
* @list_tail - poniter to tail of receive packet queue to decap * @list_tail - poniter to tail of receive packet queue to decap
* @peer - Peer handler * @peer_mac - mac address of peer handler
*/ */
typedef QDF_STATUS(*ol_txrx_rsim_rx_decap_fp)(void *osif_dev, typedef QDF_STATUS(*ol_txrx_rsim_rx_decap_fp)(void *osif_dev,
qdf_nbuf_t *list_head, qdf_nbuf_t *list_head,
qdf_nbuf_t *list_tail, qdf_nbuf_t *list_tail,
struct cdp_peer *peer); uint8_t *peer_mac);
/* ol_txrx_rx_fp - external tx free function to read per packet stats and /* ol_txrx_rx_fp - external tx free function to read per packet stats and
* free tx buffer externally * free tx buffer externally
@@ -997,6 +997,8 @@ enum cdp_peer_param_type {
* @CDP_FILTER_MCAST_DATA: filter multicast data * @CDP_FILTER_MCAST_DATA: filter multicast data
* @CDP_FILTER_NO_DATA: filter no data * @CDP_FILTER_NO_DATA: filter no data
* @CDP_MONITOR_CHANNEL: monitor channel * @CDP_MONITOR_CHANNEL: monitor channel
* @CDP_MONITOR_FREQUENCY: monitor frequency
* @CDP_CONFIG_BSS_COLOR: configure bss color
*/ */
enum cdp_pdev_param_type { enum cdp_pdev_param_type {
CDP_CONFIG_DEBUG_SNIFFER, CDP_CONFIG_DEBUG_SNIFFER,
@@ -1024,6 +1026,8 @@ enum cdp_pdev_param_type {
CDP_FILTER_MCAST_DATA, CDP_FILTER_MCAST_DATA,
CDP_FILTER_NO_DATA, CDP_FILTER_NO_DATA,
CDP_MONITOR_CHANNEL, CDP_MONITOR_CHANNEL,
CDP_MONITOR_FREQUENCY,
CDP_CONFIG_BSS_COLOR,
}; };
/* /*
@@ -1069,6 +1073,8 @@ enum cdp_pdev_param_type {
* @cdp_pdev_param_chn_noise_flr: set channel noise floor * @cdp_pdev_param_chn_noise_flr: set channel noise floor
* @cdp_pdev_param_cfg_vow: set/get vow config * @cdp_pdev_param_cfg_vow: set/get vow config
* @cdp_pdev_param_tidq_override: set/get tid queue override * @cdp_pdev_param_tidq_override: set/get tid queue override
* @cdp_pdev_param_mon_freq: set monitor frequency
* @cdp_pdev_param_bss_color: configure bss color
* @cdp_pdev_param_tidmap_prty: set/get tid map prty * @cdp_pdev_param_tidmap_prty: set/get tid map prty
* @cdp_pdev_param_tx_pending: get tx pending * @cdp_pdev_param_tx_pending: get tx pending
* @cdp_pdev_param_fltr_neigh_peers: filter neighbour peers * @cdp_pdev_param_fltr_neigh_peers: filter neighbour peers
@@ -1125,7 +1131,9 @@ typedef union cdp_config_param_t {
uint8_t cdp_pdev_param_igmpmld_tid; uint8_t cdp_pdev_param_igmpmld_tid;
uint8_t cdp_pdev_param_arp_dbg_conf; uint8_t cdp_pdev_param_arp_dbg_conf;
uint8_t cdp_pdev_param_tidq_override; uint8_t cdp_pdev_param_tidq_override;
uint8_t cdp_pdev_param_bss_color;
uint16_t cdp_pdev_param_chn_noise_flr; uint16_t cdp_pdev_param_chn_noise_flr;
qdf_freq_t cdp_pdev_param_mon_freq;
int cdp_pdev_param_dbg_snf; int cdp_pdev_param_dbg_snf;
int cdp_pdev_param_bpr_enable; int cdp_pdev_param_bpr_enable;
int cdp_pdev_param_monitor_chan; int cdp_pdev_param_monitor_chan;

View File

@@ -49,7 +49,7 @@ static inline int cdp_is_target_ar900b
/* WIN */ /* WIN */
static inline int static inline int
cdp_mempools_attach(ol_txrx_soc_handle soc, void *ctrl_pdev) cdp_mempools_attach(ol_txrx_soc_handle soc)
{ {
if (!soc || !soc->ops) { if (!soc || !soc->ops) {
QDF_TRACE(QDF_MODULE_ID_CDP, QDF_TRACE_LEVEL_DEBUG, QDF_TRACE(QDF_MODULE_ID_CDP, QDF_TRACE_LEVEL_DEBUG,
@@ -62,36 +62,7 @@ cdp_mempools_attach(ol_txrx_soc_handle soc, void *ctrl_pdev)
!soc->ops->ctrl_ops->txrx_mempools_attach) !soc->ops->ctrl_ops->txrx_mempools_attach)
return 0; return 0;
return soc->ops->ctrl_ops->txrx_mempools_attach(ctrl_pdev); return soc->ops->ctrl_ops->txrx_mempools_attach(soc);
}
/**
* @brief set filter neighbour peers
* @details
* This defines interface function to set neighbour peer filtering.
*
* @param soc - the pointer to soc object
* @param pdev - the pointer physical device object
* @param val - the enable/disable value
* @return - int
*/
static inline int
cdp_set_filter_neighbour_peers(ol_txrx_soc_handle soc,
struct cdp_pdev *pdev, u_int32_t val)
{
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->ctrl_ops ||
!soc->ops->ctrl_ops->txrx_set_filter_neighbour_peers)
return 0;
return soc->ops->ctrl_ops->txrx_set_filter_neighbour_peers
(pdev, val);
} }
/** /**
@@ -125,143 +96,6 @@ cdp_update_filter_neighbour_peers(ol_txrx_soc_handle soc,
(soc, vdev_id, cmd, macaddr); (soc, vdev_id, cmd, macaddr);
} }
/**
* @brief set the safemode of the device
* @details
* This flag is used to bypass the encrypt and decrypt processes when send and
* receive packets. It works like open AUTH mode, HW will treate all packets
* as non-encrypt frames because no key installed. For rx fragmented frames,
* it bypasses all the rx defragmentaion.
*
* @param vdev - the data virtual device object
* @param val - the safemode state
* @return - void
*/
static inline void
cdp_set_safemode(ol_txrx_soc_handle soc,
struct cdp_vdev *vdev, u_int32_t val)
{
if (!soc || !soc->ops) {
QDF_TRACE(QDF_MODULE_ID_CDP, QDF_TRACE_LEVEL_DEBUG,
"%s: Invalid Instance:", __func__);
QDF_BUG(0);
return;
}
if (!soc->ops->ctrl_ops ||
!soc->ops->ctrl_ops->txrx_set_safemode)
return;
soc->ops->ctrl_ops->txrx_set_safemode(vdev, val);
}
/**
* @brief configure the drop unencrypted frame flag
* @details
* Rx related. When set this flag, all the unencrypted frames
* received over a secure connection will be discarded
*
* @param vdev - the data virtual device object
* @param val - flag
* @return - void
*/
static inline void
cdp_set_drop_unenc(ol_txrx_soc_handle soc,
struct cdp_vdev *vdev, u_int32_t val)
{
if (!soc || !soc->ops) {
QDF_TRACE(QDF_MODULE_ID_CDP, QDF_TRACE_LEVEL_DEBUG,
"%s: Invalid Instance:", __func__);
QDF_BUG(0);
return;
}
if (!soc->ops->ctrl_ops ||
!soc->ops->ctrl_ops->txrx_set_drop_unenc)
return;
soc->ops->ctrl_ops->txrx_set_drop_unenc(vdev, val);
}
/**
* @brief set the Tx encapsulation type of the VDEV
* @details
* This will be used to populate the HTT desc packet type field during Tx
*
* @param vdev - the data virtual device object
* @param val - the Tx encap type (htt_cmn_pkt_type)
* @return - void
*/
static inline void
cdp_set_tx_encap_type(ol_txrx_soc_handle soc,
struct cdp_vdev *vdev, enum htt_cmn_pkt_type val)
{
if (!soc || !soc->ops) {
QDF_TRACE(QDF_MODULE_ID_CDP, QDF_TRACE_LEVEL_DEBUG,
"%s: Invalid Instance:", __func__);
QDF_BUG(0);
return;
}
if (!soc->ops->ctrl_ops ||
!soc->ops->ctrl_ops->txrx_set_tx_encap_type)
return;
soc->ops->ctrl_ops->txrx_set_tx_encap_type(vdev, val);
}
/**
* @brief set the Rx decapsulation type of the VDEV
* @details
* This will be used to configure into firmware and hardware which format to
* decap all Rx packets into, for all peers under the VDEV.
*
* @param vdev - the data virtual device object
* @param val - the Rx decap mode (htt_cmn_pkt_type)
* @return - void
*/
static inline void
cdp_set_vdev_rx_decap_type(ol_txrx_soc_handle soc,
struct cdp_vdev *vdev, enum htt_cmn_pkt_type val)
{
if (!soc || !soc->ops) {
QDF_TRACE(QDF_MODULE_ID_CDP, QDF_TRACE_LEVEL_DEBUG,
"%s: Invalid Instance:", __func__);
QDF_BUG(0);
return;
}
if (!soc->ops->ctrl_ops ||
!soc->ops->ctrl_ops->txrx_set_vdev_rx_decap_type)
return;
soc->ops->ctrl_ops->txrx_set_vdev_rx_decap_type
(vdev, val);
}
/**
* @brief get the Rx decapsulation type of the VDEV
*
* @param vdev - the data virtual device object
* @return - the Rx decap type (htt_cmn_pkt_type)
*/
static inline enum htt_cmn_pkt_type
cdp_get_vdev_rx_decap_type(ol_txrx_soc_handle soc, struct cdp_vdev *vdev)
{
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->ctrl_ops ||
!soc->ops->ctrl_ops->txrx_get_vdev_rx_decap_type)
return 0;
return soc->ops->ctrl_ops->txrx_get_vdev_rx_decap_type(vdev);
}
/** /**
* @brief set the Reo Destination ring for the pdev * @brief set the Reo Destination ring for the pdev
* @details * @details
@@ -323,77 +157,34 @@ cdp_get_pdev_reo_dest(ol_txrx_soc_handle soc, uint8_t pdev_id)
* updates the peer/node-related parameters within rate-control * updates the peer/node-related parameters within rate-control
* context of the peer at association. * context of the peer at association.
* *
* @param peer - pointer to the node's object * @param soc - pointer to the soc
* @param vdev_id - id of the pointer to vdev
* @param peer_mac - mac address of the node's object
* @authorize - either to authorize or unauthorize peer * @authorize - either to authorize or unauthorize peer
* *
* @return none * @return QDF_STATUS
*/ */
static inline void static inline QDF_STATUS
cdp_peer_authorize(ol_txrx_soc_handle soc, cdp_peer_authorize(ol_txrx_soc_handle soc, uint8_t vdev_id, uint8_t *peer_mac,
struct cdp_peer *peer, u_int32_t authorize) u_int32_t authorize)
{ {
if (!soc || !soc->ops) { if (!soc || !soc->ops) {
QDF_TRACE(QDF_MODULE_ID_CDP, QDF_TRACE_LEVEL_DEBUG, QDF_TRACE(QDF_MODULE_ID_CDP, QDF_TRACE_LEVEL_DEBUG,
"%s: Invalid Instance:", __func__); "%s: Invalid Instance:", __func__);
QDF_BUG(0); QDF_BUG(0);
return; return QDF_STATUS_E_FAILURE;
} }
if (!soc->ops->ctrl_ops || if (!soc->ops->ctrl_ops ||
!soc->ops->ctrl_ops->txrx_peer_authorize) !soc->ops->ctrl_ops->txrx_peer_authorize)
return; return QDF_STATUS_E_FAILURE;
soc->ops->ctrl_ops->txrx_peer_authorize return soc->ops->ctrl_ops->txrx_peer_authorize
(peer, authorize); (soc, vdev_id, peer_mac, authorize);
}
/* Should be ol_txrx_ctrl_api.h */
static inline void cdp_set_mesh_mode
(ol_txrx_soc_handle soc, struct cdp_vdev *vdev, u_int32_t val)
{
if (!soc || !soc->ops) {
QDF_TRACE(QDF_MODULE_ID_CDP, QDF_TRACE_LEVEL_DEBUG,
"%s: Invalid Instance:", __func__);
QDF_BUG(0);
return;
}
if (!soc->ops->ctrl_ops ||
!soc->ops->ctrl_ops->txrx_set_mesh_mode)
return;
soc->ops->ctrl_ops->txrx_set_mesh_mode(vdev, val);
}
/**
* @brief set mesh rx filter
* @details based on the bits enabled in the filter packets has to be dropped.
*
* @param soc - pointer to the soc
* @param vdev - the data virtual device object
* @param val - value to be set
* @return - void
*/
static inline
void cdp_set_mesh_rx_filter(ol_txrx_soc_handle soc,
struct cdp_vdev *vdev, uint32_t val)
{
if (!soc || !soc->ops) {
QDF_TRACE(QDF_MODULE_ID_CDP, QDF_TRACE_LEVEL_DEBUG,
"%s: Invalid Instance:", __func__);
QDF_BUG(0);
return;
}
if (!soc->ops->ctrl_ops ||
!soc->ops->ctrl_ops->txrx_set_mesh_rx_filter)
return;
soc->ops->ctrl_ops->txrx_set_mesh_rx_filter(vdev, val);
} }
static inline void cdp_tx_flush_buffers static inline void cdp_tx_flush_buffers
(ol_txrx_soc_handle soc, struct cdp_vdev *vdev) (ol_txrx_soc_handle soc, uint8_t vdev_id)
{ {
if (!soc || !soc->ops) { if (!soc || !soc->ops) {
QDF_TRACE(QDF_MODULE_ID_CDP, QDF_TRACE_LEVEL_DEBUG, QDF_TRACE(QDF_MODULE_ID_CDP, QDF_TRACE_LEVEL_DEBUG,
@@ -406,65 +197,179 @@ static inline void cdp_tx_flush_buffers
!soc->ops->ctrl_ops->tx_flush_buffers) !soc->ops->ctrl_ops->tx_flush_buffers)
return; return;
soc->ops->ctrl_ops->tx_flush_buffers(vdev); soc->ops->ctrl_ops->tx_flush_buffers(soc, vdev_id);
} }
static inline uint32_t cdp_txrx_get_vdev_param(ol_txrx_soc_handle soc, static inline QDF_STATUS cdp_txrx_get_vdev_param(ol_txrx_soc_handle soc,
struct cdp_vdev *vdev, uint8_t vdev_id,
enum cdp_vdev_param_type type) enum cdp_vdev_param_type type,
cdp_config_param_type *val)
{ {
if (!soc || !soc->ops) { if (!soc || !soc->ops) {
QDF_TRACE(QDF_MODULE_ID_CDP, QDF_TRACE_LEVEL_DEBUG, QDF_TRACE(QDF_MODULE_ID_CDP, QDF_TRACE_LEVEL_DEBUG,
"%s: Invalid Instance:", __func__); "%s: Invalid Instance:", __func__);
QDF_BUG(0); QDF_BUG(0);
return -1; return QDF_STATUS_E_FAILURE;
} }
if (!soc->ops->ctrl_ops || if (!soc->ops->ctrl_ops ||
!soc->ops->ctrl_ops->txrx_get_vdev_param) { !soc->ops->ctrl_ops->txrx_get_vdev_param) {
QDF_TRACE(QDF_MODULE_ID_CDP, QDF_TRACE_LEVEL_DEBUG, QDF_TRACE(QDF_MODULE_ID_CDP, QDF_TRACE_LEVEL_DEBUG,
"%s: callback not registered:", __func__); "%s: callback not registered:", __func__);
return -1; return QDF_STATUS_E_FAILURE;
} }
return soc->ops->ctrl_ops->txrx_get_vdev_param(vdev, type); return soc->ops->ctrl_ops->txrx_get_vdev_param(soc, vdev_id,
type, val);
} }
static inline void cdp_txrx_set_vdev_param(ol_txrx_soc_handle soc, static inline QDF_STATUS
struct cdp_vdev *vdev, enum cdp_vdev_param_type type, cdp_txrx_set_vdev_param(ol_txrx_soc_handle soc,
uint32_t val) uint8_t vdev_id, enum cdp_vdev_param_type type,
cdp_config_param_type val)
{ {
if (!soc || !soc->ops) { if (!soc || !soc->ops) {
QDF_TRACE(QDF_MODULE_ID_CDP, QDF_TRACE_LEVEL_DEBUG, QDF_TRACE(QDF_MODULE_ID_CDP, QDF_TRACE_LEVEL_DEBUG,
"%s: Invalid Instance:", __func__); "%s: Invalid Instance:", __func__);
QDF_BUG(0); QDF_BUG(0);
return; return QDF_STATUS_E_FAILURE;
} }
if (!soc->ops->ctrl_ops || if (!soc->ops->ctrl_ops ||
!soc->ops->ctrl_ops->txrx_set_vdev_param) !soc->ops->ctrl_ops->txrx_set_vdev_param)
return; return QDF_STATUS_E_FAILURE;
soc->ops->ctrl_ops->txrx_set_vdev_param(vdev, type, val); return soc->ops->ctrl_ops->txrx_set_vdev_param(soc, vdev_id,
type, val);
} }
static inline void static inline QDF_STATUS
cdp_peer_set_nawds(ol_txrx_soc_handle soc, cdp_txrx_set_psoc_param(ol_txrx_soc_handle soc,
struct cdp_peer *peer, uint8_t value) enum cdp_psoc_param_type type,
cdp_config_param_type val)
{ {
if (!soc || !soc->ops) { if (!soc || !soc->ops) {
QDF_TRACE(QDF_MODULE_ID_CDP, QDF_TRACE_LEVEL_DEBUG, QDF_TRACE(QDF_MODULE_ID_CDP, QDF_TRACE_LEVEL_DEBUG,
"%s: Invalid Instance:", __func__); "%s: Invalid Instance:", __func__);
QDF_BUG(0); QDF_BUG(0);
return; return QDF_STATUS_E_FAILURE;
} }
if (!soc->ops->ctrl_ops || if (!soc->ops->ctrl_ops ||
!soc->ops->ctrl_ops->txrx_peer_set_nawds) !soc->ops->ctrl_ops->txrx_set_psoc_param)
return; return QDF_STATUS_E_FAILURE;
soc->ops->ctrl_ops->txrx_peer_set_nawds return soc->ops->ctrl_ops->txrx_set_psoc_param(soc, type, val);
(peer, value); }
static inline QDF_STATUS
cdp_txrx_get_psoc_param(ol_txrx_soc_handle soc,
enum cdp_psoc_param_type type,
cdp_config_param_type *val)
{
if (!soc || !soc->ops) {
QDF_TRACE(QDF_MODULE_ID_CDP, QDF_TRACE_LEVEL_DEBUG,
"%s: Invalid Instance:", __func__);
QDF_BUG(0);
return QDF_STATUS_E_FAILURE;
}
if (!soc->ops->ctrl_ops ||
!soc->ops->ctrl_ops->txrx_get_psoc_param)
return QDF_STATUS_E_FAILURE;
return soc->ops->ctrl_ops->txrx_get_psoc_param(soc, type, val);
}
/**
* cdp_txrx_set_pdev_param() - set pdev parameter
* @soc: opaque soc handle
* @pdev_id: id of data path pdev handle
* @type: param type
* @val: value
*
* Return: status: 0 - Success, non-zero: Failure
*/
static inline QDF_STATUS cdp_txrx_set_pdev_param(ol_txrx_soc_handle soc,
uint8_t pdev_id,
enum cdp_pdev_param_type type,
cdp_config_param_type val)
{
if (!soc || !soc->ops) {
QDF_TRACE(QDF_MODULE_ID_CDP, QDF_TRACE_LEVEL_DEBUG,
"%s: Invalid Instance:", __func__);
QDF_BUG(0);
return QDF_STATUS_E_FAILURE;
}
if (!soc->ops->ctrl_ops ||
!soc->ops->ctrl_ops->txrx_set_pdev_param)
return QDF_STATUS_E_FAILURE;
return soc->ops->ctrl_ops->txrx_set_pdev_param
(soc, pdev_id, type, val);
}
/**
* cdp_txrx_set_peer_param() - set pdev parameter
* @soc: opaque soc handle
* @vdev_id: id of data path vdev handle
* @peer_mac: peer mac address
* @type: param type
* @val: value
*
* Return: status: 0 - Success, non-zero: Failure
*/
static inline QDF_STATUS cdp_txrx_set_peer_param(ol_txrx_soc_handle soc,
uint8_t vdev_id,
uint8_t *peer_mac,
enum cdp_peer_param_type type,
cdp_config_param_type val)
{
if (!soc || !soc->ops) {
QDF_TRACE(QDF_MODULE_ID_CDP, QDF_TRACE_LEVEL_DEBUG,
"%s: Invalid Instance:", __func__);
QDF_BUG(0);
return QDF_STATUS_E_FAILURE;
}
if (!soc->ops->ctrl_ops ||
!soc->ops->ctrl_ops->txrx_set_peer_param)
return QDF_STATUS_E_FAILURE;
return soc->ops->ctrl_ops->txrx_set_peer_param
(soc, vdev_id, peer_mac, type, val);
}
/**
* cdp_txrx_get_peer_param() - set pdev parameter
* @soc: opaque soc handle
* @vdev_id: id of data path vdev handle
* @peer_mac: peer mac address
* @type: param type
* @val: address of buffer
*
* Return: status
*/
static inline QDF_STATUS cdp_txrx_get_peer_param(ol_txrx_soc_handle soc,
uint8_t vdev_id,
uint8_t *peer_mac,
enum cdp_peer_param_type type,
cdp_config_param_type *val)
{
if (!soc || !soc->ops) {
QDF_TRACE(QDF_MODULE_ID_CDP, QDF_TRACE_LEVEL_DEBUG,
"%s: Invalid Instance:", __func__);
QDF_BUG(0);
return QDF_STATUS_E_FAILURE;
}
if (!soc->ops->ctrl_ops ||
!soc->ops->ctrl_ops->txrx_get_peer_param)
return QDF_STATUS_E_FAILURE;
return soc->ops->ctrl_ops->txrx_get_peer_param
(soc, vdev_id, peer_mac, type, val);
} }
#ifdef QCA_MULTIPASS_SUPPORT #ifdef QCA_MULTIPASS_SUPPORT
@@ -489,32 +394,32 @@ cdp_peer_set_vlan_id(ol_txrx_soc_handle soc, uint8_t vdev_id,
#endif #endif
/** /**
* cdp_txrx_set_pdev_param() - set pdev parameter * cdp_txrx_get_pdev_param() - get pdev parameter
* @soc: opaque soc handle * @soc: opaque soc handle
* @pdev: data path pdev handle * @pdev_id: id of data path pdev handle
* @type: param type * @type: param type
* @val: value of pdev_tx_capture * @value: address of value buffer
* *
* Return: status: 0 - Success, non-zero: Failure * Return: status
*/ */
static inline QDF_STATUS cdp_txrx_set_pdev_param(ol_txrx_soc_handle soc, static inline QDF_STATUS cdp_txrx_get_pdev_param(ol_txrx_soc_handle soc,
struct cdp_pdev *pdev, uint8_t pdev_id,
enum cdp_pdev_param_type type, enum cdp_pdev_param_type type,
uint32_t val) cdp_config_param_type *value)
{ {
if (!soc || !soc->ops) { if (!soc || !soc->ops) {
QDF_TRACE(QDF_MODULE_ID_CDP, QDF_TRACE_LEVEL_DEBUG, QDF_TRACE(QDF_MODULE_ID_CDP, QDF_TRACE_LEVEL_DEBUG,
"%s: Invalid Instance:", __func__); "%s: Invalid Instance:", __func__);
QDF_BUG(0); QDF_BUG(0);
return QDF_STATUS_SUCCESS; return QDF_STATUS_E_FAILURE;
} }
if (!soc->ops->ctrl_ops || if (!soc->ops->ctrl_ops ||
!soc->ops->ctrl_ops->txrx_set_pdev_param) !soc->ops->ctrl_ops->txrx_get_pdev_param)
return QDF_STATUS_SUCCESS; return QDF_STATUS_E_FAILURE;
return soc->ops->ctrl_ops->txrx_set_pdev_param return soc->ops->ctrl_ops->txrx_get_pdev_param
(pdev, type, val); (soc, pdev_id, type, value);
} }
/** /**

View File

@@ -705,29 +705,4 @@ cdp_host_get_radio_stats(ol_txrx_soc_handle soc,
return soc->ops->host_stats_ops->txrx_get_radio_stats(soc, pdev_id, return soc->ops->host_stats_ops->txrx_get_radio_stats(soc, pdev_id,
buf); buf);
} }
/**
* @brief confgure rate stats at soc
*
* @param soc - opaque soc handle
* @param val - capabilities
* @return - QDF_STATUS
*/
static inline QDF_STATUS
cdp_soc_configure_rate_stats(ol_txrx_soc_handle soc, uint8_t val)
{
if (!soc || !soc->ops) {
QDF_TRACE(QDF_MODULE_ID_CDP, QDF_TRACE_LEVEL_DEBUG,
"%s: Invalid Instance", __func__);
QDF_BUG(0);
return QDF_STATUS_E_FAILURE;
}
if (!soc->ops->host_stats_ops ||
!soc->ops->host_stats_ops->configure_rate_stats)
return QDF_STATUS_E_FAILURE;
return soc->ops->host_stats_ops->configure_rate_stats(soc, val);
}
#endif /* _CDP_TXRX_HOST_STATS_H_ */ #endif /* _CDP_TXRX_HOST_STATS_H_ */

View File

@@ -28,67 +28,8 @@
/* TODO: adf need to be replaced with qdf */ /* TODO: adf need to be replaced with qdf */
#include "cdp_txrx_handle.h" #include "cdp_txrx_handle.h"
static inline u_int16_t
cdp_tx_desc_alloc_and_mark_for_mcast_clone(ol_txrx_soc_handle soc,
struct cdp_pdev *pdev, u_int16_t buf_count)
{
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_desc_alloc_and_mark_for_mcast_clone)
return 0;
return soc->ops->me_ops->
tx_desc_alloc_and_mark_for_mcast_clone
(pdev, buf_count);
}
static inline u_int16_t
cdp_tx_desc_free_and_unmark_for_mcast_clone(ol_txrx_soc_handle soc,
struct cdp_pdev *pdev, u_int16_t buf_count)
{
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_desc_free_and_unmark_for_mcast_clone)
return 0;
return soc->ops->me_ops->
tx_desc_free_and_unmark_for_mcast_clone
(pdev, buf_count);
}
static inline u_int16_t
cdp_tx_get_mcast_buf_allocated_marked(ol_txrx_soc_handle soc,
struct cdp_pdev *pdev)
{
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_get_mcast_buf_allocated_marked)
return 0;
return soc->ops->me_ops->tx_get_mcast_buf_allocated_marked
(pdev);
}
static inline void static inline void
cdp_tx_me_alloc_descriptor(ol_txrx_soc_handle soc, struct cdp_pdev *pdev) cdp_tx_me_alloc_descriptor(ol_txrx_soc_handle soc, uint8_t pdev_id)
{ {
if (!soc || !soc->ops) { if (!soc || !soc->ops) {
QDF_TRACE(QDF_MODULE_ID_CDP, QDF_TRACE_LEVEL_DEBUG, QDF_TRACE(QDF_MODULE_ID_CDP, QDF_TRACE_LEVEL_DEBUG,
@@ -101,11 +42,11 @@ cdp_tx_me_alloc_descriptor(ol_txrx_soc_handle soc, struct cdp_pdev *pdev)
!soc->ops->me_ops->tx_me_alloc_descriptor) !soc->ops->me_ops->tx_me_alloc_descriptor)
return; return;
soc->ops->me_ops->tx_me_alloc_descriptor(pdev); soc->ops->me_ops->tx_me_alloc_descriptor(soc, pdev_id);
} }
static inline void static inline void
cdp_tx_me_free_descriptor(ol_txrx_soc_handle soc, struct cdp_pdev *pdev) cdp_tx_me_free_descriptor(ol_txrx_soc_handle soc, uint8_t pdev_id)
{ {
if (!soc || !soc->ops) { if (!soc || !soc->ops) {
QDF_TRACE(QDF_MODULE_ID_CDP, QDF_TRACE_LEVEL_DEBUG, QDF_TRACE(QDF_MODULE_ID_CDP, QDF_TRACE_LEVEL_DEBUG,
@@ -118,12 +59,13 @@ cdp_tx_me_free_descriptor(ol_txrx_soc_handle soc, struct cdp_pdev *pdev)
!soc->ops->me_ops->tx_me_free_descriptor) !soc->ops->me_ops->tx_me_free_descriptor)
return; return;
soc->ops->me_ops->tx_me_free_descriptor(pdev); soc->ops->me_ops->tx_me_free_descriptor(soc, pdev_id);
} }
static inline uint16_t cdp_tx_me_convert_ucast( static inline uint16_t
ol_txrx_soc_handle soc, uint8_t vdev_id, cdp_tx_me_convert_ucast(ol_txrx_soc_handle soc, uint8_t vdev_id,
qdf_nbuf_t wbuf, u_int8_t newmac[][6], uint8_t newmaccnt) qdf_nbuf_t wbuf, u_int8_t newmac[][6],
uint8_t newmaccnt)
{ {
if (!soc || !soc->ops) { if (!soc || !soc->ops) {
QDF_TRACE(QDF_MODULE_ID_CDP, QDF_TRACE_LEVEL_DEBUG, QDF_TRACE(QDF_MODULE_ID_CDP, QDF_TRACE_LEVEL_DEBUG,
@@ -140,32 +82,4 @@ static inline uint16_t cdp_tx_me_convert_ucast(
(soc, vdev_id, wbuf, newmac, newmaccnt); (soc, vdev_id, wbuf, newmac, newmaccnt);
} }
/* Should be a function pointer in ol_txrx_osif_ops{} */
/**
* @brief notify mcast frame indication from FW.
* @details
* This notification will be used to convert
* multicast frame to unicast.
*
* @param pdev - handle to the ctrl SW's physical device object
* @param vdev_id - ID of the virtual device received the special data
* @param msdu - the multicast msdu returned by FW for host inspect
*/
static inline int cdp_mcast_notify(ol_txrx_soc_handle soc,
struct cdp_pdev *pdev, u_int8_t vdev_id, qdf_nbuf_t msdu)
{
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->mcast_notify)
return 0;
return soc->ops->me_ops->mcast_notify(pdev, vdev_id, msdu);
}
#endif #endif

View File

@@ -25,116 +25,9 @@
#ifndef _CDP_TXRX_MON_H_ #ifndef _CDP_TXRX_MON_H_
#define _CDP_TXRX_MON_H_ #define _CDP_TXRX_MON_H_
#include "cdp_txrx_handle.h" #include "cdp_txrx_handle.h"
static inline void cdp_monitor_set_filter_ucast_data
(ol_txrx_soc_handle soc, struct cdp_pdev *pdev, u_int8_t val)
{
if (!soc || !soc->ops) {
QDF_TRACE(QDF_MODULE_ID_CDP, QDF_TRACE_LEVEL_DEBUG,
"%s: Invalid Instance", __func__);
QDF_BUG(0);
return;
}
if (!soc->ops->mon_ops || static inline QDF_STATUS cdp_reset_monitor_mode(ol_txrx_soc_handle soc,
!soc->ops->mon_ops->txrx_monitor_set_filter_ucast_data) uint8_t pdev_id)
return;
soc->ops->mon_ops->txrx_monitor_set_filter_ucast_data
(pdev, val);
}
static inline void cdp_monitor_set_filter_mcast_data
(ol_txrx_soc_handle soc, struct cdp_pdev *pdev, u_int8_t val)
{
if (!soc || !soc->ops) {
QDF_TRACE(QDF_MODULE_ID_CDP, QDF_TRACE_LEVEL_DEBUG,
"%s: Invalid Instance", __func__);
QDF_BUG(0);
return;
}
if (!soc->ops->mon_ops ||
!soc->ops->mon_ops->txrx_monitor_set_filter_mcast_data)
return;
soc->ops->mon_ops->txrx_monitor_set_filter_mcast_data
(pdev, val);
}
static inline void cdp_monitor_set_filter_non_data
(ol_txrx_soc_handle soc, struct cdp_pdev *pdev, u_int8_t val)
{
if (!soc || !soc->ops) {
QDF_TRACE(QDF_MODULE_ID_CDP, QDF_TRACE_LEVEL_DEBUG,
"%s: Invalid Instance", __func__);
QDF_BUG(0);
return;
}
if (!soc->ops->mon_ops ||
!soc->ops->mon_ops->txrx_monitor_set_filter_non_data)
return;
soc->ops->mon_ops->txrx_monitor_set_filter_non_data
(pdev, val);
}
static inline bool cdp_monitor_get_filter_ucast_data
(ol_txrx_soc_handle soc, struct cdp_vdev *vdev_txrx_handle)
{
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->mon_ops ||
!soc->ops->mon_ops->txrx_monitor_get_filter_ucast_data)
return 0;
return soc->ops->mon_ops->txrx_monitor_get_filter_ucast_data
(vdev_txrx_handle);
}
static inline bool cdp_monitor_get_filter_mcast_data
(ol_txrx_soc_handle soc, struct cdp_vdev *vdev_txrx_handle)
{
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->mon_ops ||
!soc->ops->mon_ops->txrx_monitor_get_filter_mcast_data)
return 0;
return soc->ops->mon_ops->txrx_monitor_get_filter_mcast_data
(vdev_txrx_handle);
}
static inline bool cdp_monitor_get_filter_non_data
(ol_txrx_soc_handle soc, struct cdp_vdev *vdev_txrx_handle)
{
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->mon_ops ||
!soc->ops->mon_ops->txrx_monitor_get_filter_non_data)
return 0;
return soc->ops->mon_ops->txrx_monitor_get_filter_non_data
(vdev_txrx_handle);
}
static inline QDF_STATUS cdp_reset_monitor_mode
(ol_txrx_soc_handle soc, struct cdp_pdev *pdev)
{ {
if (!soc || !soc->ops) { if (!soc || !soc->ops) {
QDF_TRACE(QDF_MODULE_ID_CDP, QDF_TRACE_LEVEL_DEBUG, QDF_TRACE(QDF_MODULE_ID_CDP, QDF_TRACE_LEVEL_DEBUG,
@@ -147,85 +40,31 @@ static inline QDF_STATUS cdp_reset_monitor_mode
!soc->ops->mon_ops->txrx_reset_monitor_mode) !soc->ops->mon_ops->txrx_reset_monitor_mode)
return 0; return 0;
return soc->ops->mon_ops->txrx_reset_monitor_mode(pdev); return soc->ops->mon_ops->txrx_reset_monitor_mode(soc, pdev_id);
}
static inline void
cdp_record_monitor_chan_num(ol_txrx_soc_handle soc, struct cdp_pdev *pdev,
int chan_num)
{
if (!soc || !soc->ops) {
QDF_TRACE(QDF_MODULE_ID_CDP, QDF_TRACE_LEVEL_DEBUG,
"%s: Invalid Instance", __func__);
QDF_BUG(0);
return;
}
if (!soc->ops->mon_ops ||
!soc->ops->mon_ops->txrx_monitor_record_channel)
return;
soc->ops->mon_ops->txrx_monitor_record_channel(pdev, chan_num);
}
static inline void
cdp_record_monitor_chan_freq(ol_txrx_soc_handle soc, struct cdp_pdev *pdev,
qdf_freq_t chan_freq)
{
if (!soc || !soc->ops) {
QDF_TRACE(QDF_MODULE_ID_CDP, QDF_TRACE_LEVEL_DEBUG,
"%s: Invalid Instance", __func__);
QDF_BUG(0);
return;
}
if (!soc->ops->mon_ops ||
!soc->ops->mon_ops->txrx_monitor_record_frequency)
return;
soc->ops->mon_ops->txrx_monitor_record_frequency(pdev, chan_freq);
} }
/** /**
* cdp_deliver_tx_mgmt() - Deliver mgmt frame for tx capture * cdp_deliver_tx_mgmt() - Deliver mgmt frame for tx capture
* @soc: Datapath SOC handle * @soc: Datapath SOC handle
* @pdev: Datapath PDEV handle * @pdev_id: id of datapath PDEV handle
* @nbuf: Management frame buffer * @nbuf: Management frame buffer
*/ */
static inline void static inline QDF_STATUS
cdp_deliver_tx_mgmt(ol_txrx_soc_handle soc, struct cdp_pdev *pdev, cdp_deliver_tx_mgmt(ol_txrx_soc_handle soc, uint8_t pdev_id,
qdf_nbuf_t nbuf) qdf_nbuf_t nbuf)
{ {
if (!soc || !soc->ops) { if (!soc || !soc->ops) {
QDF_TRACE(QDF_MODULE_ID_CDP, QDF_TRACE_LEVEL_DEBUG, QDF_TRACE(QDF_MODULE_ID_CDP, QDF_TRACE_LEVEL_DEBUG,
"%s: Invalid Instance", __func__); "%s: Invalid Instance", __func__);
QDF_BUG(0); QDF_BUG(0);
return; return QDF_STATUS_E_FAILURE;
} }
if (!soc->ops->mon_ops || if (!soc->ops->mon_ops ||
!soc->ops->mon_ops->txrx_deliver_tx_mgmt) !soc->ops->mon_ops->txrx_deliver_tx_mgmt)
return; return QDF_STATUS_E_FAILURE;
soc->ops->mon_ops->txrx_deliver_tx_mgmt(pdev, nbuf); return soc->ops->mon_ops->txrx_deliver_tx_mgmt(soc, pdev_id, nbuf);
}
static inline void
cdp_set_bsscolor(ol_txrx_soc_handle soc, struct cdp_pdev *pdev,
uint8_t bsscolor)
{
if (!soc || !soc->ops) {
QDF_TRACE(QDF_MODULE_ID_CDP, QDF_TRACE_LEVEL_DEBUG,
"%s: Invalid Instance", __func__);
QDF_BUG(0);
return;
}
if (!soc->ops->mon_ops ||
!soc->ops->mon_ops->txrx_set_bsscolor)
return;
soc->ops->mon_ops->txrx_set_bsscolor(pdev, bsscolor);
} }
#ifdef WLAN_FEATURE_PKT_CAPTURE #ifdef WLAN_FEATURE_PKT_CAPTURE

View File

@@ -171,26 +171,6 @@ struct cdp_cmn_ops {
ol_txrx_peer_unmap_sync_cb ol_txrx_peer_unmap_sync_cb
peer_unmap_sync); peer_unmap_sync);
uint8_t (*txrx_get_pdev_id_frm_pdev)(struct cdp_pdev *pdev);
bool (*txrx_get_vow_config_frm_pdev)(struct cdp_pdev *pdev);
void (*txrx_pdev_set_chan_noise_floor)(struct cdp_pdev *pdev,
int16_t chan_noise_floor);
void
(*txrx_set_nac)(ol_txrx_soc_handle soc, uint8_t vdev_id,
uint8_t *peer_mac);
/**
* txrx_set_pdev_tx_capture() - callback to set pdev tx_capture
* @soc: opaque soc handle
* @pdev: data path pdev handle
* @val: value of pdev_tx_capture
*
* Return: status: 0 - Success, non-zero: Failure
*/
QDF_STATUS (*txrx_set_pdev_tx_capture)(struct cdp_pdev *pdev, int val);
QDF_STATUS QDF_STATUS
(*txrx_get_peer_mac_from_peer_id) (*txrx_get_peer_mac_from_peer_id)
(struct cdp_soc_t *cdp_soc, (struct cdp_soc_t *cdp_soc,
@@ -257,8 +237,6 @@ struct cdp_cmn_ops {
ol_txrx_mgmt_tx_cb ota_ack_cb, ol_txrx_mgmt_tx_cb ota_ack_cb,
void *ctxt); void *ctxt);
int (*txrx_get_tx_pending)(struct cdp_pdev *pdev);
/** /**
* ol_txrx_data_tx_cb - Function registered with the data path * ol_txrx_data_tx_cb - Function registered with the data path
* that is called when tx frames marked as "no free" are * that is called when tx frames marked as "no free" are
@@ -420,18 +398,12 @@ struct cdp_cmn_ops {
uint8_t map_id, uint8_t map_id,
uint8_t tos, uint8_t tid); uint8_t tos, uint8_t tid);
void (*hmmc_tid_override_en)(struct cdp_pdev *pdev, bool val);
void (*set_hmmc_tid_val)(struct cdp_pdev *pdev, uint8_t tid);
QDF_STATUS (*txrx_stats_request)(struct cdp_soc_t *soc_handle, QDF_STATUS (*txrx_stats_request)(struct cdp_soc_t *soc_handle,
uint8_t vdev_id, uint8_t vdev_id,
struct cdp_txrx_stats_req *req); struct cdp_txrx_stats_req *req);
QDF_STATUS (*display_stats)(struct cdp_soc_t *psoc, uint16_t value, QDF_STATUS (*display_stats)(struct cdp_soc_t *psoc, uint16_t value,
enum qdf_stats_verbosity_level level); enum qdf_stats_verbosity_level level);
void (*txrx_soc_set_nss_cfg)(ol_txrx_soc_handle soc, int config);
int(*txrx_soc_get_nss_cfg)(ol_txrx_soc_handle soc);
QDF_STATUS (*txrx_intr_attach)(struct cdp_soc_t *soc_handle); QDF_STATUS (*txrx_intr_attach)(struct cdp_soc_t *soc_handle);
void (*txrx_intr_detach)(struct cdp_soc_t *soc_handle); void (*txrx_intr_detach)(struct cdp_soc_t *soc_handle);
@@ -494,13 +466,16 @@ struct cdp_cmn_ops {
uint8_t vdev_id, uint8_t vdev_id,
ol_txrx_rx_fp *stack_fn, ol_txrx_rx_fp *stack_fn,
ol_osif_vdev_handle *osif_vdev); ol_osif_vdev_handle *osif_vdev);
void (*set_rate_stats_ctx)(struct cdp_soc_t *soc,
void *ctx);
int (*txrx_classify_update) int (*txrx_classify_update)
(struct cdp_soc_t *soc, uint8_t vdev_id, qdf_nbuf_t skb, (struct cdp_soc_t *soc, uint8_t vdev_id, qdf_nbuf_t skb,
enum txrx_direction, struct ol_txrx_nbuf_classify *nbuf_class); enum txrx_direction, struct ol_txrx_nbuf_classify *nbuf_class);
bool (*get_dp_capabilities)(struct cdp_soc_t *soc, bool (*get_dp_capabilities)(struct cdp_soc_t *soc,
enum cdp_capabilities dp_caps); enum cdp_capabilities dp_caps);
void (*set_rate_stats_ctx)(struct cdp_soc_t *soc, void *ctx);
void* (*get_rate_stats_ctx)(struct cdp_soc_t *soc); void* (*get_rate_stats_ctx)(struct cdp_soc_t *soc);
QDF_STATUS (*txrx_peer_flush_rate_stats)(struct cdp_soc_t *soc, QDF_STATUS (*txrx_peer_flush_rate_stats)(struct cdp_soc_t *soc,
uint8_t pdev_id, uint8_t pdev_id,
@@ -511,13 +486,9 @@ struct cdp_cmn_ops {
QDF_STATUS (*set_pdev_pcp_tid_map)(struct cdp_soc_t *soc, QDF_STATUS (*set_pdev_pcp_tid_map)(struct cdp_soc_t *soc,
uint8_t pdev_id, uint8_t pdev_id,
uint8_t pcp, uint8_t tid); uint8_t pcp, uint8_t tid);
QDF_STATUS (*set_pdev_tidmap_prty)(struct cdp_pdev *pdev, uint8_t prty);
QDF_STATUS (*set_vdev_pcp_tid_map)(struct cdp_soc_t *soc, QDF_STATUS (*set_vdev_pcp_tid_map)(struct cdp_soc_t *soc,
uint8_t vdev_id, uint8_t vdev_id,
uint8_t pcp, uint8_t tid); uint8_t pcp, uint8_t tid);
QDF_STATUS (*set_vdev_tidmap_prty)(struct cdp_vdev *vdev, uint8_t prty);
QDF_STATUS (*set_vdev_tidmap_tbl_id)(struct cdp_vdev *vdev,
uint8_t mapid);
#ifdef QCA_MULTIPASS_SUPPORT #ifdef QCA_MULTIPASS_SUPPORT
QDF_STATUS (*set_vlan_groupkey)(struct cdp_soc_t *soc, uint8_t vdev_id, QDF_STATUS (*set_vlan_groupkey)(struct cdp_soc_t *soc, uint8_t vdev_id,
uint16_t vlan_id, uint16_t group_key); uint16_t vlan_id, uint16_t group_key);
@@ -531,85 +502,11 @@ struct cdp_cmn_ops {
struct cdp_ctrl_ops { struct cdp_ctrl_ops {
int int
(*txrx_mempools_attach)(void *ctrl_pdev); (*txrx_mempools_attach)(ol_txrx_soc_handle dp_soc);
int
(*txrx_set_filter_neighbour_peers)(
struct cdp_pdev *pdev,
uint32_t val);
int int
(*txrx_update_filter_neighbour_peers)( (*txrx_update_filter_neighbour_peers)(
struct cdp_soc_t *soc, uint8_t vdev_id, struct cdp_soc_t *soc, uint8_t vdev_id,
uint32_t cmd, uint8_t *macaddr); uint32_t cmd, uint8_t *macaddr);
/**
* @brief set the safemode of the device
* @details
* This flag is used to bypass the encrypt and decrypt processes when
* send and receive packets. It works like open AUTH mode, HW will
* ctreate all packets as non-encrypt frames because no key installed.
* For rx fragmented frames,it bypasses all the rx defragmentaion.
*
* @param vdev - the data virtual device object
* @param val - the safemode state
* @return - void
*/
void
(*txrx_set_safemode)(
struct cdp_vdev *vdev,
u_int32_t val);
/**
* @brief configure the drop unencrypted frame flag
* @details
* Rx related. When set this flag, all the unencrypted frames
* received over a secure connection will be discarded
*
* @param vdev - the data virtual device object
* @param val - flag
* @return - void
*/
void
(*txrx_set_drop_unenc)(
struct cdp_vdev *vdev,
u_int32_t val);
/**
* @brief set the Tx encapsulation type of the VDEV
* @details
* This will be used to populate the HTT desc packet type field
* during Tx
* @param vdev - the data virtual device object
* @param val - the Tx encap type
* @return - void
*/
void
(*txrx_set_tx_encap_type)(
struct cdp_vdev *vdev,
enum htt_cmn_pkt_type val);
/**
* @brief set the Rx decapsulation type of the VDEV
* @details
* This will be used to configure into firmware and hardware
* which format to decap all Rx packets into, for all peers under
* the VDEV.
* @param vdev - the data virtual device object
* @param val - the Rx decap mode
* @return - void
*/
void
(*txrx_set_vdev_rx_decap_type)(
struct cdp_vdev *vdev,
enum htt_cmn_pkt_type val);
/**
* @brief get the Rx decapsulation type of the VDEV
*
* @param vdev - the data virtual device object
* @return - the Rx decap type
*/
enum htt_cmn_pkt_type
(*txrx_get_vdev_rx_decap_type)(struct cdp_vdev *vdev);
/* Is this similar to ol_txrx_peer_state_update() in MCL */ /* Is this similar to ol_txrx_peer_state_update() in MCL */
/** /**
@@ -619,36 +516,28 @@ struct cdp_ctrl_ops {
* updates the peer/node-related parameters within rate-control * updates the peer/node-related parameters within rate-control
* context of the peer at association. * context of the peer at association.
* *
* @param peer - pointer to the node's object * @param soc_hdl - pointer to the soc object
* @param vdev_id - id of the virtual object
* @param peer_mac - mac address of the node's object
* @authorize - either to authorize or unauthorize peer * @authorize - either to authorize or unauthorize peer
* *
* @return none * @return QDF_STATUS
*/ */
void QDF_STATUS
(*txrx_peer_authorize)(struct cdp_peer *peer, (*txrx_peer_authorize)(struct cdp_soc_t *soc_hdl,
u_int32_t authorize); uint8_t vdev_id,
uint8_t *peer_mac,
u_int32_t authorize);
/* Should be ol_txrx_ctrl_api.h */ void (*tx_flush_buffers)(struct cdp_soc_t *soc, uint8_t vdev_id);
void (*txrx_set_mesh_mode)(struct cdp_vdev *vdev, u_int32_t val);
/**
* @brief setting mesh rx filter
* @details
* based on the bits enabled in the filter packets has to be dropped.
*
* @param vdev - the data virtual device object
* @param val - value to set
*/
void (*txrx_set_mesh_rx_filter)(struct cdp_vdev *vdev, uint32_t val);
void (*tx_flush_buffers)(struct cdp_vdev *vdev);
int (*txrx_is_target_ar900b)(struct cdp_soc_t *soc_hdl); int (*txrx_is_target_ar900b)(struct cdp_soc_t *soc_hdl);
void (*txrx_set_vdev_param)(struct cdp_vdev *vdev, QDF_STATUS
enum cdp_vdev_param_type param, uint32_t val); (*txrx_set_vdev_param)(struct cdp_soc_t *soc, uint8_t vdev_id,
enum cdp_vdev_param_type param,
cdp_config_param_type val);
void (*txrx_peer_set_nawds)(struct cdp_peer *peer, uint8_t value);
/** /**
* @brief Set the reo dest ring num of the radio * @brief Set the reo dest ring num of the radio
* @details * @details
@@ -687,6 +576,9 @@ struct cdp_ctrl_ops {
wdi_event_subscribe *event_cb_sub, wdi_event_subscribe *event_cb_sub,
uint32_t event); uint32_t event);
int (*txrx_get_sec_type)(ol_txrx_soc_handle soc, uint8_t vdev_id,
uint8_t *peer_mac, uint8_t sec_idx);
QDF_STATUS QDF_STATUS
(*txrx_update_mgmt_txpow_vdev)(struct cdp_soc_t *soc, (*txrx_update_mgmt_txpow_vdev)(struct cdp_soc_t *soc,
uint8_t vdev_id, uint8_t vdev_id,
@@ -695,14 +587,31 @@ struct cdp_ctrl_ops {
/** /**
* txrx_set_pdev_param() - callback to set pdev parameter * txrx_set_pdev_param() - callback to set pdev parameter
* @soc: opaque soc handle * @soc: opaque soc handle
* @pdev: data path pdev handle * @pdev_id:id of data path pdev handle
* @val: value of pdev_tx_capture * @val: value of pdev_tx_capture
* *
* Return: status: 0 - Success, non-zero: Failure * Return: status: 0 - Success, non-zero: Failure
*/ */
QDF_STATUS (*txrx_set_pdev_param)(struct cdp_pdev *pdev, QDF_STATUS (*txrx_set_pdev_param)(struct cdp_soc_t *soc,
uint8_t pdev_id,
enum cdp_pdev_param_type type, enum cdp_pdev_param_type type,
uint32_t val); cdp_config_param_type val);
QDF_STATUS (*txrx_get_pdev_param)(struct cdp_soc_t *soc,
uint8_t pdev_id,
enum cdp_pdev_param_type type,
cdp_config_param_type *val);
QDF_STATUS (*txrx_set_peer_param)(struct cdp_soc_t *soc,
uint8_t vdev_id, uint8_t *peer_mac,
enum cdp_peer_param_type param,
cdp_config_param_type val);
QDF_STATUS (*txrx_get_peer_param)(struct cdp_soc_t *soc,
uint8_t vdev_id, uint8_t *peer_mac,
enum cdp_peer_param_type param,
cdp_config_param_type *val);
void * (*txrx_get_pldev)(struct cdp_pdev *pdev); void * (*txrx_get_pldev)(struct cdp_pdev *pdev);
#ifdef ATH_SUPPORT_NAC_RSSI #ifdef ATH_SUPPORT_NAC_RSSI
@@ -722,8 +631,10 @@ struct cdp_ctrl_ops {
(*set_key)(struct cdp_soc_t *soc, uint8_t vdev_id, uint8_t *mac, (*set_key)(struct cdp_soc_t *soc, uint8_t vdev_id, uint8_t *mac,
bool is_unicast, uint32_t *key); bool is_unicast, uint32_t *key);
uint32_t (*txrx_get_vdev_param)(struct cdp_vdev *vdev, QDF_STATUS (*txrx_get_vdev_param)(struct cdp_soc_t *soc,
enum cdp_vdev_param_type param); uint8_t vdev_id,
enum cdp_vdev_param_type param,
cdp_config_param_type *val);
int (*enable_peer_based_pktlog)(struct cdp_soc_t *cdp_soc, int (*enable_peer_based_pktlog)(struct cdp_soc_t *cdp_soc,
uint8_t pdev_id, uint8_t pdev_id,
uint8_t *macaddr, uint8_t enb_dsb); uint8_t *macaddr, uint8_t enb_dsb);
@@ -761,78 +672,40 @@ struct cdp_ctrl_ops {
bool is_rx_pkt_cap_enable, bool is_tx_pkt_cap_enable, bool is_rx_pkt_cap_enable, bool is_tx_pkt_cap_enable,
uint8_t *peer_mac); uint8_t *peer_mac);
#endif /* WLAN_TX_PKT_CAPTURE_ENH || WLAN_RX_PKT_CAPTURE_ENH */ #endif /* WLAN_TX_PKT_CAPTURE_ENH || WLAN_RX_PKT_CAPTURE_ENH */
QDF_STATUS
(*txrx_set_psoc_param)(struct cdp_soc_t *soc,
enum cdp_psoc_param_type param,
cdp_config_param_type val);
QDF_STATUS (*txrx_get_psoc_param)(ol_txrx_soc_handle soc,
enum cdp_psoc_param_type type,
cdp_config_param_type *val);
}; };
struct cdp_me_ops { struct cdp_me_ops {
u_int16_t (*tx_desc_alloc_and_mark_for_mcast_clone) void (*tx_me_alloc_descriptor)(struct cdp_soc_t *soc,
(struct cdp_pdev *pdev, u_int16_t buf_count); uint8_t pdev_id);
u_int16_t (*tx_desc_free_and_unmark_for_mcast_clone)( void (*tx_me_free_descriptor)(struct cdp_soc_t *soc, uint8_t pdev_id);
struct cdp_pdev *pdev,
u_int16_t buf_count);
u_int16_t uint16_t (*tx_me_convert_ucast)(struct cdp_soc_t *soc, uint8_t vdev_id,
(*tx_get_mcast_buf_allocated_marked) qdf_nbuf_t wbuf, u_int8_t newmac[][6],
(struct cdp_pdev *pdev); uint8_t newmaccnt);
void
(*tx_me_alloc_descriptor)(struct cdp_pdev *pdev);
void
(*tx_me_free_descriptor)(struct cdp_pdev *pdev);
uint16_t (*tx_me_convert_ucast)(
ol_txrx_soc_handle soc, uint8_t vdev_id,
qdf_nbuf_t wbuf, u_int8_t newmac[][6],
uint8_t newmaccnt);
/* Should be a function pointer in ol_txrx_osif_ops{} */
/**
* @brief notify mcast frame indication from FW.
* @details
* This notification will be used to convert
* multicast frame to unicast.
*
* @param pdev - handle to the ctrl SW's physical device object
* @param vdev_id - ID of the virtual device received the special data
* @param msdu - the multicast msdu returned by FW for host inspect
*/
int (*mcast_notify)(struct cdp_pdev *pdev,
u_int8_t vdev_id, qdf_nbuf_t msdu);
}; };
struct cdp_mon_ops { struct cdp_mon_ops {
void (*txrx_monitor_set_filter_ucast_data) QDF_STATUS (*txrx_reset_monitor_mode)(ol_txrx_soc_handle soc,
(struct cdp_pdev *, u_int8_t val); uint8_t pdev_id);
void (*txrx_monitor_set_filter_mcast_data)
(struct cdp_pdev *, u_int8_t val);
void (*txrx_monitor_set_filter_non_data)
(struct cdp_pdev *, u_int8_t val);
bool (*txrx_monitor_get_filter_ucast_data) QDF_STATUS (*txrx_deliver_tx_mgmt)
(struct cdp_vdev *vdev_txrx_handle); (struct cdp_soc_t *cdp_soc, uint8_t pdev_id, qdf_nbuf_t nbuf);
bool (*txrx_monitor_get_filter_mcast_data)
(struct cdp_vdev *vdev_txrx_handle);
bool (*txrx_monitor_get_filter_non_data)
(struct cdp_vdev *vdev_txrx_handle);
QDF_STATUS (*txrx_reset_monitor_mode)(struct cdp_pdev *pdev);
/* HK advance monitor filter support */ /* HK advance monitor filter support */
QDF_STATUS (*txrx_set_advance_monitor_filter) QDF_STATUS (*txrx_set_advance_monitor_filter)
(struct cdp_pdev *pdev, struct cdp_monitor_filter *filter_val); (struct cdp_soc_t *soc_hdl, uint8_t pdev_id,
struct cdp_monitor_filter *filter_val);
void (*txrx_monitor_record_channel)
(struct cdp_pdev *pdev, int val);
void (*txrx_monitor_record_frequency)
(struct cdp_pdev *pdev, qdf_freq_t val);
void (*txrx_deliver_tx_mgmt)
(struct cdp_pdev *pdev, qdf_nbuf_t nbuf);
void (*txrx_set_bsscolor)
(struct cdp_pdev *pdev, uint8_t bsscolor);
}; };
#ifdef WLAN_FEATURE_PKT_CAPTURE #ifdef WLAN_FEATURE_PKT_CAPTURE
@@ -983,9 +856,6 @@ struct cdp_host_stats_ops {
(*txrx_get_ratekbps)(int preamb, int mcs, (*txrx_get_ratekbps)(int preamb, int mcs,
int htflag, int gintval); int htflag, int gintval);
QDF_STATUS
(*configure_rate_stats)(struct cdp_soc_t *soc, uint8_t val);
QDF_STATUS QDF_STATUS
(*txrx_update_peer_stats)(struct cdp_soc_t *soc, uint8_t vdev_id, (*txrx_update_peer_stats)(struct cdp_soc_t *soc, uint8_t vdev_id,
uint8_t *peer_mac, void *stats, uint8_t *peer_mac, void *stats,

View File

@@ -1012,6 +1012,13 @@ void dp_rx_tid_stats_cb(struct dp_soc *soc, void *cb_ctxt,
union hal_reo_status *reo_status); union hal_reo_status *reo_status);
void dp_rx_bar_stats_cb(struct dp_soc *soc, void *cb_ctxt, void dp_rx_bar_stats_cb(struct dp_soc *soc, void *cb_ctxt,
union hal_reo_status *reo_status); union hal_reo_status *reo_status);
uint16_t dp_tx_me_send_convert_ucast(struct cdp_soc_t *soc, uint8_t vdev_id,
qdf_nbuf_t nbuf,
uint8_t newmac[][QDF_MAC_ADDR_SIZE],
uint8_t new_mac_cnt);
void dp_tx_me_alloc_descriptor(struct cdp_soc_t *soc, uint8_t pdev_id);
void dp_tx_me_free_descriptor(struct cdp_soc_t *soc, uint8_t pdev_id);
QDF_STATUS dp_h2t_ext_stats_msg_send(struct dp_pdev *pdev, QDF_STATUS dp_h2t_ext_stats_msg_send(struct dp_pdev *pdev,
uint32_t stats_type_upload_mask, uint32_t config_param_0, uint32_t stats_type_upload_mask, uint32_t config_param_0,
uint32_t config_param_1, uint32_t config_param_2, uint32_t config_param_1, uint32_t config_param_2,

File diff suppressed because it is too large Load Diff

View File

@@ -3427,39 +3427,6 @@ void dp_local_peer_id_free(struct dp_pdev *pdev, struct dp_peer *peer)
} }
#endif #endif
/**
* dp_get_peer_mac_addr_frm_id(): get mac address of the peer
* @soc_handle: DP SOC handle
* @peer_id:peer_id of the peer
*
* return: vdev_id of the vap
*/
uint8_t dp_get_peer_mac_addr_frm_id(struct cdp_soc_t *soc_handle,
uint16_t peer_id, uint8_t *peer_mac)
{
struct dp_soc *soc = (struct dp_soc *)soc_handle;
struct dp_peer *peer;
uint8_t vdev_id;
peer = dp_peer_find_by_id(soc, peer_id);
QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_DEBUG,
"soc %pK peer_id %d", soc, peer_id);
if (!peer) {
QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_ERROR,
"peer not found ");
return CDP_INVALID_VDEV_ID;
}
qdf_mem_copy(peer_mac, peer->mac_addr.raw, 6);
vdev_id = peer->vdev->vdev_id;
dp_peer_unref_del_find_by_id(peer);
return vdev_id;
}
/** /**
* dp_peer_rxtid_stats: Retried Rx TID (REO queue) stats from HW * dp_peer_rxtid_stats: Retried Rx TID (REO queue) stats from HW
* @peer: DP peer handle * @peer: DP peer handle

View File

@@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2016-2019 The Linux Foundation. All rights reserved. * Copyright (c) 2016-2020 The Linux Foundation. All rights reserved.
* *
* Permission to use, copy, modify, and/or distribute this software for * Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the * any purpose with or without fee is hereby granted, provided that the
@@ -179,6 +179,7 @@ dp_peer_update_inactive_time(struct dp_pdev *pdev, uint32_t tag_type,
/** /**
* dp_peer_set_vlan_id: set vlan_id for this peer * dp_peer_set_vlan_id: set vlan_id for this peer
* @cdp_soc: soc handle * @cdp_soc: soc handle
* @vdev_id: id of vdev object
* @peer_mac: mac address * @peer_mac: mac address
* @vlan_id: vlan id for peer * @vlan_id: vlan id for peer
* *
@@ -186,16 +187,16 @@ dp_peer_update_inactive_time(struct dp_pdev *pdev, uint32_t tag_type,
*/ */
static inline static inline
void dp_peer_set_vlan_id(struct cdp_soc_t *cdp_soc, void dp_peer_set_vlan_id(struct cdp_soc_t *cdp_soc,
struct cdp_vdev *vdev_handle, uint8_t *peer_mac, uint8_t vdev_id, uint8_t *peer_mac,
uint16_t vlan_id) uint16_t vlan_id)
{ {
} }
/** /**
* dp_set_vlan_groupkey: set vlan map for vdev * dp_set_vlan_groupkey: set vlan map for vdev
* @cdp_soc: soc handle * @soc: pointer to soc
* @vdev_id: vdev_id * @vdev_id: id of vdev handle
* @vlan_id: vlan_id of peer * @vlan_id: vlan_id
* @group_key: group key for vlan * @group_key: group key for vlan
* *
* return: set success/failure * return: set success/failure
@@ -230,7 +231,7 @@ void dp_peer_multipass_list_remove(struct dp_peer *peer)
} }
#else #else
void dp_peer_set_vlan_id(struct cdp_soc_t *cdp_soc, void dp_peer_set_vlan_id(struct cdp_soc_t *cdp_soc,
struct cdp_vdev *vdev_handle, uint8_t *peer_mac, uint8_t vdev_id, uint8_t *peer_mac,
uint16_t vlan_id); uint16_t vlan_id);
QDF_STATUS dp_set_vlan_groupkey(struct cdp_soc_t *soc, uint8_t vdev_id, QDF_STATUS dp_set_vlan_groupkey(struct cdp_soc_t *soc, uint8_t vdev_id,
uint16_t vlan_id, uint16_t group_key); uint16_t vlan_id, uint16_t group_key);
@@ -240,6 +241,8 @@ void dp_peer_multipass_list_remove(struct dp_peer *peer);
/** /**
* dp_peer_update_pkt_capture_params: Set Rx & Tx Capture flags for a peer * dp_peer_update_pkt_capture_params: Set Rx & Tx Capture flags for a peer
* @soc: DP SOC handle
* @pdev_id: id of DP pdev handle
* @is_rx_pkt_cap_enable: enable/disable Rx packet capture in monitor mode * @is_rx_pkt_cap_enable: enable/disable Rx packet capture in monitor mode
* @is_tx_pkt_cap_enable: enable/disable Tx packet capture in monitor mode * @is_tx_pkt_cap_enable: enable/disable Tx packet capture in monitor mode
* @peer_mac: MAC address for which the above need to be enabled/disabled * @peer_mac: MAC address for which the above need to be enabled/disabled
@@ -247,7 +250,8 @@ void dp_peer_multipass_list_remove(struct dp_peer *peer);
* Return: Success if Rx & Tx capture is enabled for peer, false otherwise * Return: Success if Rx & Tx capture is enabled for peer, false otherwise
*/ */
QDF_STATUS QDF_STATUS
dp_peer_update_pkt_capture_params(struct cdp_pdev *pdev, dp_peer_update_pkt_capture_params(ol_txrx_soc_handle soc,
uint8_t pdev_id,
bool is_rx_pkt_cap_enable, bool is_rx_pkt_cap_enable,
bool is_tx_pkt_cap_enable, bool is_tx_pkt_cap_enable,
uint8_t *peer_mac); uint8_t *peer_mac);

View File

@@ -313,7 +313,7 @@ dp_rx_deliver_raw(struct dp_vdev *vdev, qdf_nbuf_t nbuf_list,
} }
vdev->osif_rsim_rx_decap(vdev->osif_vdev, &deliver_list_head, vdev->osif_rsim_rx_decap(vdev->osif_vdev, &deliver_list_head,
&deliver_list_tail, (struct cdp_peer*) peer); &deliver_list_tail, peer->mac_addr.raw);
vdev->osif_rx(vdev->osif_vdev, deliver_list_head); vdev->osif_rx(vdev->osif_vdev, deliver_list_head);
} }
@@ -1323,7 +1323,7 @@ static inline void dp_rx_deliver_to_stack(struct dp_vdev *vdev,
if (qdf_unlikely(vdev->rx_decap_type == htt_cmn_pkt_type_raw) || if (qdf_unlikely(vdev->rx_decap_type == htt_cmn_pkt_type_raw) ||
(vdev->rx_decap_type == htt_cmn_pkt_type_native_wifi)) { (vdev->rx_decap_type == htt_cmn_pkt_type_native_wifi)) {
vdev->osif_rsim_rx_decap(vdev->osif_vdev, &nbuf_head, vdev->osif_rsim_rx_decap(vdev->osif_vdev, &nbuf_head,
&nbuf_tail, (struct cdp_peer *) peer); &nbuf_tail, peer->mac_addr.raw);
} }
vdev->osif_rx(vdev->osif_vdev, nbuf_head); vdev->osif_rx(vdev->osif_vdev, nbuf_head);

View File

@@ -1100,7 +1100,7 @@ bool dp_rx_multipass_process(struct dp_peer *peer, qdf_nbuf_t nbuf,
#ifndef WLAN_RX_PKT_CAPTURE_ENH #ifndef WLAN_RX_PKT_CAPTURE_ENH
static inline static inline
void dp_peer_set_rx_capture_enabled(struct cdp_peer *peer_handle, bool value) void dp_peer_set_rx_capture_enabled(struct dp_peer *peer_handle, bool value)
{ {
} }
#endif #endif

View File

@@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2016-2019 The Linux Foundation. All rights reserved. * Copyright (c) 2016-2020 The Linux Foundation. All rights reserved.
* *
* Permission to use, copy, modify, and/or distribute this software for * Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the * any purpose with or without fee is hereby granted, provided that the
@@ -45,7 +45,7 @@ QDF_STATUS dp_rx_pdev_mon_status_detach(struct dp_pdev *pdev, int mac_id);
* *
* Return: QDF_STATUS * Return: QDF_STATUS
*/ */
QDF_STATUS dp_reset_monitor_mode(struct cdp_pdev *pdev_handle); QDF_STATUS dp_reset_monitor_mode(struct cdp_soc_t *soc_hdl, uint8_t pdev_id);
/** /**
* dp_pdev_configure_monitor_rings() - configure monitor rings * dp_pdev_configure_monitor_rings() - configure monitor rings

View File

@@ -2049,30 +2049,6 @@ static bool dp_check_exc_metadata(struct cdp_tx_exception_metadata *tx_exc)
return true; return true;
} }
/**
* __dp_tx_send_exception: Wrapper API for dp_tx_send_exception.
* @soc: DP soc handle
* @vdev_id: id of DP vdev handle
* @tx_exc_metadata: Handle that holds exception path meta data
*
* Return: NULL on success,
* nbuf when it fails to send
*/
qdf_nbuf_t
__dp_tx_send_exception(ol_txrx_soc_handle soc, uint8_t vdev_id, qdf_nbuf_t nbuf,
struct cdp_tx_exception_metadata *tx_exc_metadata)
{
struct dp_vdev *vdev =
dp_get_vdev_from_soc_vdev_id_wifi3((struct dp_soc *)soc,
vdev_id);
if (!vdev)
return nbuf;
return dp_tx_send_exception((struct cdp_vdev *)vdev, nbuf,
tx_exc_metadata);
}
/** /**
* dp_tx_send_exception() - Transmit a frame on a given VAP in exception path * dp_tx_send_exception() - Transmit a frame on a given VAP in exception path
* @soc: DP soc handle * @soc: DP soc handle
@@ -2091,10 +2067,10 @@ 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) struct cdp_tx_exception_metadata *tx_exc_metadata)
{ {
qdf_ether_header_t *eh = NULL; qdf_ether_header_t *eh = NULL;
struct dp_tx_msdu_info_s msdu_info;
struct dp_vdev *vdev = struct dp_vdev *vdev =
dp_get_vdev_from_soc_vdev_id_wifi3((struct dp_soc *)soc, dp_get_vdev_from_soc_vdev_id_wifi3((struct dp_soc *)soc,
vdev_id); vdev_id);
struct dp_tx_msdu_info_s msdu_info;
if (qdf_unlikely(!vdev)) if (qdf_unlikely(!vdev))
goto fail; goto fail;

View File

@@ -187,11 +187,8 @@ QDF_STATUS dp_tx_pdev_attach(struct dp_pdev *pdev);
qdf_nbuf_t dp_tx_send(struct cdp_soc_t *soc, uint8_t vdev_id, qdf_nbuf_t nbuf); qdf_nbuf_t dp_tx_send(struct cdp_soc_t *soc, uint8_t vdev_id, qdf_nbuf_t nbuf);
qdf_nbuf_t qdf_nbuf_t dp_tx_send_exception(struct cdp_soc_t *soc, uint8_t vdev_id,
__dp_tx_send_exception(ol_txrx_soc_handle soc, uint8_t vdev_id, qdf_nbuf_t nbuf, qdf_nbuf_t nbuf,
struct cdp_tx_exception_metadata *tx_exc_metadata);
qdf_nbuf_t dp_tx_send_exception(struct cdp_vdev *data_vdev, qdf_nbuf_t nbuf,
struct cdp_tx_exception_metadata *tx_exc); struct cdp_tx_exception_metadata *tx_exc);
qdf_nbuf_t dp_tx_send_mesh(struct cdp_soc_t *soc, uint8_t vdev_id, qdf_nbuf_t dp_tx_send_mesh(struct cdp_soc_t *soc, uint8_t vdev_id,
qdf_nbuf_t nbuf); qdf_nbuf_t nbuf);
@@ -360,7 +357,7 @@ static inline void dp_tx_comp_process_exception(struct dp_tx_desc_s *tx_desc)
#ifndef WLAN_TX_PKT_CAPTURE_ENH #ifndef WLAN_TX_PKT_CAPTURE_ENH
static inline static inline
void dp_peer_set_tx_capture_enabled(struct cdp_peer *peer_handle, bool value) void dp_peer_set_tx_capture_enabled(struct dp_peer *peer_handle, bool value)
{ {
} }
#endif #endif

View File

@@ -1915,7 +1915,7 @@ struct dp_vdev {
struct dp_tx_desc_pool_s *pool; struct dp_tx_desc_pool_s *pool;
#endif #endif
/* AP BRIDGE enabled */ /* AP BRIDGE enabled */
uint32_t ap_bridge_enabled; bool ap_bridge_enabled;
enum cdp_sec_type sec_type; enum cdp_sec_type sec_type;