qcacmn: Use arrays for param conversion from host to target type

Convert host param id to target param id using arrays
instead of switch case. This enables removal of CONFIG_MCL
compile time macro and use specific macro
ENABLE_HOST_TO_TARGET_CONVERSION for conversions

Change-Id: I223141d47e92521e6600fc0e160ab2deef43d7d2
CRs-Fixed: 2418030
This commit is contained in:
Surya Prakash
2019-04-29 10:13:44 +05:30
committed by nshrivas
parent 261451a46c
commit 4e517d7795
5 changed files with 509 additions and 695 deletions

View File

@@ -162,22 +162,20 @@ enum wmi_rx_exec_ctx {
/** /**
* struct wmi_unified_attach_params - wmi init parameters * struct wmi_unified_attach_params - wmi init parameters
* @param osdev : NIC device * @osdev: NIC device
* @param target_type : type of supported wmi command * @target_type: type of supported wmi command
* @param use_cookie : flag to indicate cookie based allocation * @use_cookie: flag to indicate cookie based allocation
* @param enable_vdev_pdev_param_conversion : To enable pdev vdev parametric * @is_async_ep: queueing interrupt or non-interrupt endpoint
* id conversion from host type to * @rx_ops: handle to wmi ops
* target type * @psoc: objmgr psoc
* @param ops : handle to wmi ops * @max_commands: max commands
* @psoc : objmgr psoc * @soc_id: SoC device instance id
* @max_commands : max commands
*/ */
struct wmi_unified_attach_params { struct wmi_unified_attach_params {
osdev_t osdev; osdev_t osdev;
enum wmi_target_type target_type; enum wmi_target_type target_type;
bool use_cookie; bool use_cookie;
bool is_async_ep; bool is_async_ep;
bool enable_vdev_pdev_param_conversion;
struct wmi_rx_ops *rx_ops; struct wmi_rx_ops *rx_ops;
struct wlan_objmgr_psoc *psoc; struct wlan_objmgr_psoc *psoc;
uint16_t max_commands; uint16_t max_commands;

View File

@@ -4995,7 +4995,6 @@ typedef enum {
wmi_pdev_param_equal_ru_allocation_enable, wmi_pdev_param_equal_ru_allocation_enable,
wmi_pdev_param_per_peer_prd_cfr_enable, wmi_pdev_param_per_peer_prd_cfr_enable,
wmi_pdev_param_nav_override_config, wmi_pdev_param_nav_override_config,
wmi_pdev_param_max,
} wmi_conv_pdev_params_id; } wmi_conv_pdev_params_id;
@@ -5124,8 +5123,6 @@ typedef enum {
wmi_vdev_param_ul_stbc, wmi_vdev_param_ul_stbc,
wmi_vdev_param_ul_fixed_rate, wmi_vdev_param_ul_fixed_rate,
wmi_vdev_param_rawmode_open_war, wmi_vdev_param_rawmode_open_war,
wmi_vdev_param_max,
} wmi_conv_vdev_param_id; } wmi_conv_vdev_param_id;
/** /**
@@ -6040,57 +6037,66 @@ typedef enum {
/** /**
* Peer param enum abstracted from target * Peer param enum abstracted from target
* @WMI_HOST_PEER_MIMO_PS_STATE: mimo powersave state
* @WMI_HOST_PEER_AMPDU: enable/disable AMPDU . initial value (enabled)
* @WMI_HOST_PEER_AUTHORIZE: authorize/unauthorize peer.
* initial value is unauthorized (0)
* @WMI_HOST_PEER_CHWIDTH: Peer channel bandwidth
* @WMI_HOST_PEER_NSS: peer NSS
* @WMI_HOST_PEER_USE_4ADDR: USE 4 ADDR
* @WMI_HOST_PEER_EXT_STATS_ENABLE: Enable extended peer stats
* @WMI_HOST_PEER_USE_FIXED_PWR: Use FIXED Pwr,
* @WMI_HOST_PEER_PARAM_FIXED_RATE: Set peer fixed rate
* @WMI_HOST_PEER_SET_MU_WHITELIST: Whitelist peer TIDs
* @WMI_HOST_PEER_MEMBERSHIP: set group membership status
* @WMI_HOST_PEER_USERPOS: User POS
* @WMI_HOST_PEER_CRIT_PROTO_HINT_ENABLED: Critical Protocol Hint enabled
* @WMI_HOST_PEER_TX_FAIL_CNT_THR: Tx Fail count threshold
* @WMI_HOST_PEER_SET_HW_RETRY_CTS2S: Set hardware retry CTS to self
* @WMI_HOST_PEER_IBSS_ATIM_WINDOW_LENGTH: IBSS ATIM window length
* @WMI_HOST_PEER_PHYMODE: Peer Phymode
* @WMI_HOST_PEER_SET_MAC_TX_RATE: Set MAC Tx rate
* @WMI_HOST_PEER_SET_DEFAULT_ROUTING: Set default Rx routing
* @WMI_HOST_PEER_SET_MIN_TX_RATE: Set Minimum T rate
* @WMI_HOST_PEER_NSS_VHT160: peer NSS for 160Mhz
* @WMI_HOST_PEER_NSS_VHT80_80: peer NSS for 80+80MHz
* @WMI_HOST_PEER_PARAM_SU_TXBF_SOUNDING_INTERVAL: Set SU sounding interval
* @WMI_HOST_PEER_PARAM_MU_TXBF_SOUNDING_INTERVAL: Set MU sounding interval
* @WMI_HOST_PEER_PARAM_TXBF_SOUNDING_ENABLE: Enable sounding interval set
* @WMI_HOST_PEER_PARAM_MU_ENABLE: Enable MU support
* @WMI_HOST_PEER_PARAM_OFDMA_ENABLE: Enable OFDMA support
* @WMI_HOST_PEER_PARAM_ENABLE_FT: Notify FT roam
*/ */
typedef enum { enum {
/** mimo powersave state */
WMI_HOST_PEER_MIMO_PS_STATE = 0x1, WMI_HOST_PEER_MIMO_PS_STATE = 0x1,
/** enable/disable AMPDU . initial value (enabled) */ WMI_HOST_PEER_AMPDU,
WMI_HOST_PEER_AMPDU = 0x2, WMI_HOST_PEER_AUTHORIZE,
/** authorize/unauthorize peer. initial value is unauthorized (0) */ WMI_HOST_PEER_CHWIDTH,
WMI_HOST_PEER_AUTHORIZE = 0x3, WMI_HOST_PEER_NSS,
/** peer channel bandwidth */ WMI_HOST_PEER_USE_4ADDR,
WMI_HOST_PEER_CHWIDTH = 0x4, WMI_HOST_PEER_EXT_STATS_ENABLE,
/** peer NSS */ WMI_HOST_PEER_USE_FIXED_PWR,
WMI_HOST_PEER_NSS = 0x5, WMI_HOST_PEER_PARAM_FIXED_RATE,
/** USE 4 ADDR */ WMI_HOST_PEER_SET_MU_WHITELIST,
WMI_HOST_PEER_USE_4ADDR = 0x6, WMI_HOST_PEER_MEMBERSHIP,
/** Enable extended peer stats */ WMI_HOST_PEER_USERPOS,
WMI_HOST_PEER_EXT_STATS_ENABLE = 0x7, WMI_HOST_PEER_CRIT_PROTO_HINT_ENABLED,
/*Use FIXED Pwr */ WMI_HOST_PEER_TX_FAIL_CNT_THR,
WMI_HOST_PEER_USE_FIXED_PWR = 0x8, WMI_HOST_PEER_SET_HW_RETRY_CTS2S,
/* Set peer fixed rate */ WMI_HOST_PEER_IBSS_ATIM_WINDOW_LENGTH,
WMI_HOST_PEER_PARAM_FIXED_RATE = 0x9, WMI_HOST_PEER_PHYMODE,
/* Whitelist peer TIDs */ WMI_HOST_PEER_SET_MAC_TX_RATE,
WMI_HOST_PEER_SET_MU_WHITELIST = 0xa, WMI_HOST_PEER_SET_DEFAULT_ROUTING,
/* set group membership status */ WMI_HOST_PEER_SET_MIN_TX_RATE,
WMI_HOST_PEER_MEMBERSHIP = 0xb, WMI_HOST_PEER_NSS_VHT160,
WMI_HOST_PEER_USERPOS = 0xc, WMI_HOST_PEER_NSS_VHT80_80,
WMI_HOST_PEER_CRIT_PROTO_HINT_ENABLED = 0xd, WMI_HOST_PEER_PARAM_SU_TXBF_SOUNDING_INTERVAL,
WMI_HOST_PEER_TX_FAIL_CNT_THR = 0xe, WMI_HOST_PEER_PARAM_MU_TXBF_SOUNDING_INTERVAL,
WMI_HOST_PEER_SET_HW_RETRY_CTS2S = 0xf, WMI_HOST_PEER_PARAM_TXBF_SOUNDING_ENABLE,
WMI_HOST_PEER_IBSS_ATIM_WINDOW_LENGTH = 0x10, WMI_HOST_PEER_PARAM_MU_ENABLE,
WMI_HOST_PEER_PHYMODE = 0x11, WMI_HOST_PEER_PARAM_OFDMA_ENABLE,
WMI_HOST_PEER_SET_MAC_TX_RATE = 0x12, WMI_HOST_PEER_PARAM_ENABLE_FT,
/* Set default Rx routing */ };
WMI_HOST_PEER_SET_DEFAULT_ROUTING = 0x13,
WMI_HOST_PEER_SET_MIN_TX_RATE = 0x14,
/* peer NSS for 160Mhx */
WMI_HOST_PEER_NSS_VHT160 = 0x15,
/* peer NSS for 160Mhx */
WMI_HOST_PEER_NSS_VHT80_80 = 0x16,
/* Set SU sounding interval */
WMI_HOST_PEER_PARAM_SU_TXBF_SOUNDING_INTERVAL = 0x17,
/* Set MU sounding interval */
WMI_HOST_PEER_PARAM_MU_TXBF_SOUNDING_INTERVAL = 0x18,
/* Enable sounding interval set */
WMI_HOST_PEER_PARAM_TXBF_SOUNDING_ENABLE = 0x19,
/* Enable MU support */
WMI_HOST_PEER_PARAM_MU_ENABLE = 0x1a,
/* Enable OFDMA support */
WMI_HOST_PEER_PARAM_OFDMA_ENABLE = 0x1b,
/* Notify FT roam */
WMI_HOST_PEER_PARAM_ENABLE_FT = 0x1c,
} PEER_PARAM_ENUM;
#define WMI_HOST_PEER_MIMO_PS_NONE 0x0 #define WMI_HOST_PEER_MIMO_PS_NONE 0x0
#define WMI_HOST_PEER_MIMO_PS_STATIC 0x1 #define WMI_HOST_PEER_MIMO_PS_STATIC 0x1
#define WMI_HOST_PEER_MIMO_PS_DYNAMIC 0x2 #define WMI_HOST_PEER_MIMO_PS_DYNAMIC 0x2

View File

@@ -2053,8 +2053,6 @@ struct wmi_soc {
/* WMI service bitmap received from target */ /* WMI service bitmap received from target */
uint32_t *wmi_service_bitmap; uint32_t *wmi_service_bitmap;
uint32_t *wmi_ext_service_bitmap; uint32_t *wmi_ext_service_bitmap;
uint32_t *pdev_param;
uint32_t *vdev_param;
uint32_t services[wmi_services_max]; uint32_t services[wmi_services_max];
uint16_t wmi_max_cmds; uint16_t wmi_max_cmds;
uint32_t soc_idx; uint32_t soc_idx;

View File

@@ -2542,21 +2542,6 @@ void *wmi_unified_attach(void *scn_handle,
wmi_handle->wmi_events = soc->wmi_events; wmi_handle->wmi_events = soc->wmi_events;
wmi_handle->services = soc->services; wmi_handle->services = soc->services;
wmi_handle->scn_handle = scn_handle; wmi_handle->scn_handle = scn_handle;
if (param->enable_vdev_pdev_param_conversion) {
if (wmi_pdev_param_max > SIZE_MAX / sizeof(uint32_t))
goto error;
soc->pdev_param = qdf_mem_malloc(
wmi_pdev_param_max * sizeof(uint32_t));
if (!soc->pdev_param)
goto error;
if (wmi_vdev_param_max > SIZE_MAX / sizeof(uint32_t))
goto error;
soc->vdev_param = qdf_mem_malloc(
wmi_vdev_param_max * sizeof(uint32_t));
if (!soc->vdev_param)
goto error;
}
soc->scn_handle = scn_handle; soc->scn_handle = scn_handle;
qdf_atomic_init(&wmi_handle->pending_cmds); qdf_atomic_init(&wmi_handle->pending_cmds);
qdf_atomic_init(&wmi_handle->is_target_suspended); qdf_atomic_init(&wmi_handle->is_target_suspended);
@@ -2607,14 +2592,6 @@ void *wmi_unified_attach(void *scn_handle,
return wmi_handle; return wmi_handle;
error: error:
if (soc->pdev_param) {
qdf_mem_free(soc->pdev_param);
soc->pdev_param = NULL;
}
if (soc->vdev_param) {
qdf_mem_free(soc->vdev_param);
soc->vdev_param = NULL;
}
qdf_mem_free(soc); qdf_mem_free(soc);
qdf_mem_free(wmi_handle); qdf_mem_free(wmi_handle);
@@ -2667,16 +2644,6 @@ void wmi_unified_detach(struct wmi_unified *wmi_handle)
} }
qdf_spinlock_destroy(&soc->ctx_lock); qdf_spinlock_destroy(&soc->ctx_lock);
if (soc->pdev_param) {
qdf_mem_free(soc->pdev_param);
soc->pdev_param = NULL;
}
if (soc->vdev_param) {
qdf_mem_free(soc->vdev_param);
soc->vdev_param = NULL;
}
if (soc->wmi_service_bitmap) { if (soc->wmi_service_bitmap) {
qdf_mem_free(soc->wmi_service_bitmap); qdf_mem_free(soc->wmi_service_bitmap);
soc->wmi_service_bitmap = NULL; soc->wmi_service_bitmap = NULL;

File diff suppressed because it is too large Load Diff