qcacmn: Add CDP Ops for peer unmap conf support

Add CDP Ops to support callbacks for peer unmap
confirmation support.

Change-Id: Ia530eeb5b6acd845b3c4cdd33108da806c5f33c5
CRs-Fixed: 2358061
This commit is contained in:
Alok Kumar
2018-11-28 17:26:53 +05:30
committed by nshrivas
parent b21a49a57e
commit 2e254c549d
4 changed files with 95 additions and 1 deletions

View File

@@ -333,4 +333,55 @@ cdp_cfg_set_new_htt_msg_format(ol_txrx_soc_handle soc,
soc->ops->cfg_ops->set_new_htt_msg_format(val);
}
/**
* cdp_cfg_set_peer_unmap_conf_support() - set peer unmap conf feature
* @soc - datapath soc handle
* @val - enable or disable peer unmap conf feature
*
* Set if peer unmap confirmation feature is supported by both FW and in INI
*
* return NONE
*/
static inline void
cdp_cfg_set_peer_unmap_conf_support(ol_txrx_soc_handle soc, bool val)
{
if (!soc || !soc->ops) {
QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_DEBUG,
"%s invalid instance", __func__);
QDF_BUG(0);
return;
}
if (!soc->ops->cfg_ops ||
!soc->ops->cfg_ops->set_peer_unmap_conf_support)
return;
soc->ops->cfg_ops->set_peer_unmap_conf_support(val);
}
/**
* cdp_cfg_get_peer_unmap_conf_support() - check peer unmap conf feature
* @soc - datapath soc handle
*
* Check if peer unmap confirmation feature is enabled
*
* return true is peer unmap confirmation feature is enabled else false
*/
static inline bool
cdp_cfg_get_peer_unmap_conf_support(ol_txrx_soc_handle soc)
{
if (!soc || !soc->ops) {
QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_DEBUG,
"%s invalid instance", __func__);
QDF_BUG(0);
return false;
}
if (!soc->ops->cfg_ops ||
!soc->ops->cfg_ops->get_peer_unmap_conf_support)
return false;
return soc->ops->cfg_ops->get_peer_unmap_conf_support();
}
#endif /* _CDP_TXRX_CFG_H_ */

View File

@@ -702,6 +702,30 @@ cdp_peer_delete(ol_txrx_soc_handle soc, void *peer, uint32_t bitmap)
soc->ops->cmn_drv_ops->txrx_peer_delete(peer, bitmap);
}
static inline void
cdp_peer_delete_sync(ol_txrx_soc_handle soc, void *peer,
QDF_STATUS(*delete_cb)(
uint8_t vdev_id,
uint32_t peerid_cnt,
uint16_t *peerid_list),
uint32_t bitmap)
{
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_peer_delete_sync)
return;
soc->ops->cmn_drv_ops->txrx_peer_delete_sync(peer,
delete_cb,
bitmap);
}
static inline int
cdp_set_monitor_mode(ol_txrx_soc_handle soc, struct cdp_vdev *vdev,
uint8_t smart_monitor)

View File

@@ -372,6 +372,13 @@ typedef struct cdp_soc_t *ol_txrx_soc_handle;
*/
typedef void (*ol_txrx_vdev_delete_cb)(void *context);
/**
* ol_txrx_peer_unmap_sync_cb - callback registered during peer detach sync
*/
typedef QDF_STATUS(*ol_txrx_peer_unmap_sync_cb)(uint8_t vdev_id,
uint32_t peer_id_cnt,
uint16_t *peer_id_list);
/**
* ol_txrx_pkt_direction - Packet Direction
* @rx_direction: rx path packet

View File

@@ -158,6 +158,12 @@ struct cdp_cmn_ops {
QDF_STATUS (*txrx_set_monitor_mode)(struct cdp_vdev *vdev,
uint8_t smart_monitor);
void (*txrx_peer_delete_sync)(void *peer,
QDF_STATUS(*delete_cb)(
uint8_t vdev_id,
uint32_t peerid_cnt,
uint16_t *peerid_list),
uint32_t bitmap);
uint8_t (*txrx_get_pdev_id_frm_pdev)(struct cdp_pdev *pdev);
@@ -999,11 +1005,15 @@ struct cdp_pmf_ops {
* @set_cfg_packet_log_enabled:
* @cfg_attach:
* @vdev_rx_set_intrabss_fwd:
* @get_opmode:
* @is_rx_fwd_disabled:
* @tx_set_is_mgmt_over_wmi_enabled:
* @is_high_latency:
* @set_flow_control_parameters:
* @set_flow_steering:
* @set_ptp_rx_opt_enabled:
* @set_new_htt_msg_format:
* @set_peer_unmap_conf_support:
* @get_peer_unmap_conf_support:
*/
struct cdp_cfg_ops {
void (*set_cfg_rx_fwd_disabled)(struct cdp_cfg *cfg_pdev,
@@ -1020,6 +1030,8 @@ struct cdp_cfg_ops {
void (*set_flow_steering)(struct cdp_cfg *cfg_pdev, uint8_t val);
void (*set_ptp_rx_opt_enabled)(struct cdp_cfg *cfg_pdev, uint8_t val);
void (*set_new_htt_msg_format)(uint8_t val);
void (*set_peer_unmap_conf_support)(bool val);
bool (*get_peer_unmap_conf_support)(void);
};
/**