qcacmn: Add a configure interface to get max_peers from OL_IF to DP

Currently max_peer value is hardcoded with DP wlan_cfg. This change adds
a generic interface to obtain a configuration parameter from OL_IF and
store in DP

Change-Id: Id437ab3bcd02fb1cbcbe8b56d55d19780af87066
CRs-Fixed: 2004658
This commit is contained in:
Pamidipati, Vijay
2017-06-09 04:46:32 +05:30
committed by snandini
parent 5379474f69
commit 6b0d2a800c
6 changed files with 36 additions and 2 deletions

View File

@@ -254,4 +254,9 @@ static inline void cdp_cfg_set_flow_steering(ol_txrx_soc_handle soc,
return; return;
} }
static inline void cdp_cfg_get_max_peer_id(ol_txrx_soc_handle soc,
struct cdp_cfg *cfg_pdev)
{
}
#endif /* _CDP_TXRX_CFG_H_ */ #endif /* _CDP_TXRX_CFG_H_ */

View File

@@ -89,6 +89,15 @@
WME_AC_VO) WME_AC_VO)
#define CDP_MAX_RX_RINGS 4 #define CDP_MAX_RX_RINGS 4
/*
* DP configuration parameters
*/
enum cdp_cfg_param_type {
CDP_CFG_MAX_PEER_ID,
CDP_CFG_NUM_PARAMS
};
/* /*
* htt_dbg_stats_type - * htt_dbg_stats_type -
* bit positions for each stats type within a stats type bitmask * bit positions for each stats type within a stats type bitmask

View File

@@ -615,6 +615,7 @@ struct ol_if_ops {
uint8_t vdev_id, uint8_t *peer_mac_addr); uint8_t vdev_id, uint8_t *peer_mac_addr);
int (*peer_unmap_event)(void *ol_soc_handle, uint16_t peer_id); int (*peer_unmap_event)(void *ol_soc_handle, uint16_t peer_id);
int (*get_dp_cfg_param)(void *ol_soc_handle, enum cdp_cfg_param_type param_num);
/* TODO: Add any other control path calls required to OL_IF/WMA layer */ /* TODO: Add any other control path calls required to OL_IF/WMA layer */
}; };

View File

@@ -4037,6 +4037,16 @@ void *dp_soc_attach_wifi3(void *osif_soc, void *hif_handle,
FL("wlan_cfg_soc_attach failed")); FL("wlan_cfg_soc_attach failed"));
goto fail2; goto fail2;
} }
if (soc->cdp_soc.ol_ops->get_dp_cfg_param) {
int ret = soc->cdp_soc.ol_ops->get_dp_cfg_param(soc,
CDP_CFG_MAX_PEER_ID);
if (ret != -EINVAL) {
wlan_cfg_set_max_peer_id(soc->wlan_cfg_ctx, ret);
}
}
qdf_spinlock_create(&soc->peer_ref_mutex); qdf_spinlock_create(&soc->peer_ref_mutex);
qdf_spinlock_create(&soc->reo_desc_freelist_lock); qdf_spinlock_create(&soc->reo_desc_freelist_lock);

View File

@@ -182,9 +182,10 @@ struct wlan_cfg_dp_pdev_ctxt {
* *
* Return: wlan_cfg_ctx - Handle to Configuration context * Return: wlan_cfg_ctx - Handle to Configuration context
*/ */
struct wlan_cfg_dp_soc_ctxt *wlan_cfg_soc_attach(void) struct wlan_cfg_dp_soc_ctxt *wlan_cfg_soc_attach()
{ {
int i = 0; int i = 0;
struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx = struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx =
qdf_mem_malloc(sizeof(struct wlan_cfg_dp_soc_ctxt)); qdf_mem_malloc(sizeof(struct wlan_cfg_dp_soc_ctxt));
@@ -202,8 +203,8 @@ struct wlan_cfg_dp_soc_ctxt *wlan_cfg_soc_attach(void)
wlan_cfg_ctx->num_tx_ext_desc_pool = WLAN_CFG_NUM_TXEXT_DESC_POOL; wlan_cfg_ctx->num_tx_ext_desc_pool = WLAN_CFG_NUM_TXEXT_DESC_POOL;
wlan_cfg_ctx->num_tx_desc = WLAN_CFG_NUM_TX_DESC; wlan_cfg_ctx->num_tx_desc = WLAN_CFG_NUM_TX_DESC;
wlan_cfg_ctx->num_tx_ext_desc = WLAN_CFG_NUM_TX_EXT_DESC; wlan_cfg_ctx->num_tx_ext_desc = WLAN_CFG_NUM_TX_EXT_DESC;
wlan_cfg_ctx->max_peer_id = WLAN_CFG_MAX_PEER_ID;
wlan_cfg_ctx->htt_packet_type = WLAN_CFG_HTT_PKT_TYPE; wlan_cfg_ctx->htt_packet_type = WLAN_CFG_HTT_PKT_TYPE;
wlan_cfg_ctx->max_peer_id = WLAN_CFG_MAX_PEER_ID;
for (i = 0; i < WLAN_CFG_INT_NUM_CONTEXTS; i++) { for (i = 0; i < WLAN_CFG_INT_NUM_CONTEXTS; i++) {
wlan_cfg_ctx->int_tx_ring_mask[i] = tx_ring_mask[i]; wlan_cfg_ctx->int_tx_ring_mask[i] = tx_ring_mask[i];
@@ -249,6 +250,11 @@ void wlan_cfg_set_num_contexts(struct wlan_cfg_dp_soc_ctxt *cfg, int num)
cfg->num_int_ctxts = num; cfg->num_int_ctxts = num;
} }
void wlan_cfg_set_max_peer_id(struct wlan_cfg_dp_soc_ctxt *cfg, uint32_t val)
{
cfg->max_peer_id = val;;
}
void wlan_cfg_set_tx_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg, void wlan_cfg_set_tx_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg,
int context, int mask) int context, int mask)
{ {

View File

@@ -106,6 +106,9 @@ void wlan_cfg_set_ce_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg,
int context, int mask); int context, int mask);
void wlan_cfg_set_rxbuf_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg, int context, void wlan_cfg_set_rxbuf_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg, int context,
int mask); int mask);
void wlan_cfg_set_max_peer_id(struct wlan_cfg_dp_soc_ctxt *cfg, uint32_t val);
/** /**
* wlan_cfg_get_num_contexts() - Number of interrupt contexts to be registered * wlan_cfg_get_num_contexts() - Number of interrupt contexts to be registered
* @wlan_cfg_ctx - Configuration Handle * @wlan_cfg_ctx - Configuration Handle