qcacmn: Extract Hw mode Id and band info

Extract/Save the Hw mode ID and Mac0 band info
to hw mode list.
This helps to identify the 2x2 5G + 1x1 2G and
2x2 2G + 1x1 5G.

Change-Id: I0682337b1a80c1b502c3307e0847aaa99479d2d3
CRs-Fixed: 2256152
This commit is contained in:
Liangwei Dong 2018-05-21 04:51:47 -04:00 • committed by nshrivas
commit e57b6b7417
5 changed files with 78 additions and 37 deletions

View file

@ -855,8 +855,9 @@ struct policy_mgr_conc_connection_info {
* @mac1_rx_ss: MAC1 Rx spatial stream
* @mac0_bw: MAC0 bandwidth
* @mac1_bw: MAC1 bandwidth
* @dbs_cap: DBS capabality
* @agile_dfs_cap: Agile DFS capabality
* @mac0_band_cap: mac0 band (5g/2g) capability
* @dbs_cap: DBS capability
* @agile_dfs_cap: Agile DFS capability
*/
struct policy_mgr_hw_mode_params {
uint8_t mac0_tx_ss;
@ -865,6 +866,7 @@ struct policy_mgr_hw_mode_params {
uint8_t mac1_rx_ss;
uint8_t mac0_bw;
uint8_t mac1_bw;
uint8_t mac0_band_cap;
uint8_t dbs_cap;
uint8_t agile_dfs_cap;
uint8_t sbs_cap;

View file

@ -72,12 +72,15 @@ void policy_mgr_hw_mode_transition_cb(uint32_t old_hw_mode_index,
return;
}
policy_mgr_debug("MAC0: TxSS:%d, RxSS:%d, Bw:%d",
hw_mode.mac0_tx_ss, hw_mode.mac0_rx_ss, hw_mode.mac0_bw);
policy_mgr_debug("MAC0: TxSS:%d, RxSS:%d, Bw:%d band_cap:%d",
hw_mode.mac0_tx_ss, hw_mode.mac0_rx_ss,
hw_mode.mac0_bw, hw_mode.mac0_band_cap);
policy_mgr_debug("MAC1: TxSS:%d, RxSS:%d, Bw:%d",
hw_mode.mac1_tx_ss, hw_mode.mac1_rx_ss, hw_mode.mac1_bw);
hw_mode.mac1_tx_ss, hw_mode.mac1_rx_ss,
hw_mode.mac1_bw);
policy_mgr_debug("DBS:%d, Agile DFS:%d, SBS:%d",
hw_mode.dbs_cap, hw_mode.agile_dfs_cap, hw_mode.sbs_cap);
hw_mode.dbs_cap, hw_mode.agile_dfs_cap,
hw_mode.sbs_cap);
/* update pm_conc_connection_list */
policy_mgr_update_hw_mode_conn_info(context, num_vdev_mac_entries,

View file

@ -477,6 +477,7 @@ QDF_STATUS policy_mgr_get_hw_mode_from_idx(
hw_mode->mac1_tx_ss = POLICY_MGR_HW_MODE_MAC1_TX_STREAMS_GET(param);
hw_mode->mac1_rx_ss = POLICY_MGR_HW_MODE_MAC1_RX_STREAMS_GET(param);
hw_mode->mac1_bw = POLICY_MGR_HW_MODE_MAC1_BANDWIDTH_GET(param);
hw_mode->mac0_band_cap = POLICY_MGR_HW_MODE_MAC0_BAND_GET(param);
hw_mode->dbs_cap = POLICY_MGR_HW_MODE_DBS_MODE_GET(param);
hw_mode->agile_dfs_cap = POLICY_MGR_HW_MODE_AGILE_DFS_GET(param);
hw_mode->sbs_cap = POLICY_MGR_HW_MODE_SBS_MODE_GET(param);
@ -815,12 +816,15 @@ void policy_mgr_pdev_set_hw_mode_cb(uint32_t status,
return;
}
policy_mgr_debug("MAC0: TxSS:%d, RxSS:%d, Bw:%d",
hw_mode.mac0_tx_ss, hw_mode.mac0_rx_ss, hw_mode.mac0_bw);
policy_mgr_debug("MAC0: TxSS:%d, RxSS:%d, Bw:%d, band_cap %d",
hw_mode.mac0_tx_ss, hw_mode.mac0_rx_ss,
hw_mode.mac0_bw, hw_mode.mac0_band_cap);
policy_mgr_debug("MAC1: TxSS:%d, RxSS:%d, Bw:%d",
hw_mode.mac1_tx_ss, hw_mode.mac1_rx_ss, hw_mode.mac1_bw);
hw_mode.mac1_tx_ss, hw_mode.mac1_rx_ss,
hw_mode.mac1_bw);
policy_mgr_debug("DBS:%d, Agile DFS:%d, SBS:%d",
hw_mode.dbs_cap, hw_mode.agile_dfs_cap, hw_mode.sbs_cap);
hw_mode.dbs_cap, hw_mode.agile_dfs_cap,
hw_mode.sbs_cap);
/* update pm_conc_connection_list */
policy_mgr_update_hw_mode_conn_info(context, num_vdev_mac_entries,

View file

@ -154,6 +154,7 @@ static void policy_mgr_get_hw_mode_params(
info->mac_bw = policy_mgr_map_wmi_channel_width_to_hw_mode_bw(
QDF_MAX(caps->max_bw_supported_2G,
caps->max_bw_supported_5G));
info->mac_band_cap = caps->supported_bands;
}
/**
@ -162,7 +163,8 @@ static void policy_mgr_get_hw_mode_params(
* @wma_handle: pointer to wma global structure
* @mac0_ss_bw_info: TX-RX streams, BW for MAC0
* @mac1_ss_bw_info: TX-RX streams, BW for MAC1
* @pos: refers to hw_mode_index
* @pos: refers to hw_mode_list array index
* @hw_mode_id: hw mode id value used by firmware
* @dbs_mode: dbs_mode for the dbs_hw_mode
* @sbs_mode: sbs_mode for the sbs_hw_mode
*
@ -174,7 +176,7 @@ static void policy_mgr_get_hw_mode_params(
static void policy_mgr_set_hw_mode_params(struct wlan_objmgr_psoc *psoc,
struct policy_mgr_mac_ss_bw_info mac0_ss_bw_info,
struct policy_mgr_mac_ss_bw_info mac1_ss_bw_info,
uint32_t pos, uint32_t dbs_mode,
uint32_t pos, uint32_t hw_mode_id, uint32_t dbs_mode,
uint32_t sbs_mode)
{
struct policy_mgr_psoc_priv_obj *pm_ctx;
@ -212,6 +214,12 @@ static void policy_mgr_set_hw_mode_params(struct wlan_objmgr_psoc *psoc,
POLICY_MGR_HW_MODE_SBS_MODE_SET(
pm_ctx->hw_mode.hw_mode_list[pos],
sbs_mode);
POLICY_MGR_HW_MODE_MAC0_BAND_SET(
pm_ctx->hw_mode.hw_mode_list[pos],
mac0_ss_bw_info.mac_band_cap);
POLICY_MGR_HW_MODE_ID_SET(
pm_ctx->hw_mode.hw_mode_list[pos],
hw_mode_id);
}
QDF_STATUS policy_mgr_update_hw_mode_list(struct wlan_objmgr_psoc *psoc,
@ -287,7 +295,8 @@ QDF_STATUS policy_mgr_update_hw_mode_list(struct wlan_objmgr_psoc *psoc,
/* Updating HW mode list */
policy_mgr_set_hw_mode_params(psoc, mac0_ss_bw_info,
mac1_ss_bw_info, i, dbs_mode, sbs_mode);
mac1_ss_bw_info, i, tmp->hw_mode_id, dbs_mode,
sbs_mode);
}
return QDF_STATUS_SUCCESS;
}
@ -331,19 +340,21 @@ void policy_mgr_dump_dbs_hw_mode(struct wlan_objmgr_psoc *psoc)
for (i = 0; i < pm_ctx->num_dbs_hw_modes; i++) {
param = pm_ctx->hw_mode.hw_mode_list[i];
policy_mgr_debug("[%d]-MAC0: tx_ss:%d rx_ss:%d bw_idx:%d",
i,
POLICY_MGR_HW_MODE_MAC0_TX_STREAMS_GET(param),
POLICY_MGR_HW_MODE_MAC0_RX_STREAMS_GET(param),
POLICY_MGR_HW_MODE_MAC0_BANDWIDTH_GET(param));
policy_mgr_debug("[%d]-MAC0: tx_ss:%d rx_ss:%d bw_idx:%d band_cap:%d",
i,
POLICY_MGR_HW_MODE_MAC0_TX_STREAMS_GET(param),
POLICY_MGR_HW_MODE_MAC0_RX_STREAMS_GET(param),
POLICY_MGR_HW_MODE_MAC0_BANDWIDTH_GET(param),
POLICY_MGR_HW_MODE_MAC0_BAND_GET(param));
policy_mgr_debug("[%d]-MAC1: tx_ss:%d rx_ss:%d bw_idx:%d",
i,
POLICY_MGR_HW_MODE_MAC1_TX_STREAMS_GET(param),
POLICY_MGR_HW_MODE_MAC1_RX_STREAMS_GET(param),
POLICY_MGR_HW_MODE_MAC1_BANDWIDTH_GET(param));
policy_mgr_debug("[%d] DBS:%d SBS:%d", i,
POLICY_MGR_HW_MODE_DBS_MODE_GET(param),
POLICY_MGR_HW_MODE_SBS_MODE_GET(param));
i,
POLICY_MGR_HW_MODE_MAC1_TX_STREAMS_GET(param),
POLICY_MGR_HW_MODE_MAC1_RX_STREAMS_GET(param),
POLICY_MGR_HW_MODE_MAC1_BANDWIDTH_GET(param));
policy_mgr_debug("[%d] DBS:%d SBS:%d hw_mode_id:%d", i,
POLICY_MGR_HW_MODE_DBS_MODE_GET(param),
POLICY_MGR_HW_MODE_SBS_MODE_GET(param),
POLICY_MGR_HW_MODE_ID_GET(param));
}
}

View file

@ -57,6 +57,8 @@
#define POLICY_MGR_HW_MODE_DBS_MODE_BITPOS (7)
#define POLICY_MGR_HW_MODE_AGILE_DFS_MODE_BITPOS (6)
#define POLICY_MGR_HW_MODE_SBS_MODE_BITPOS (5)
#define POLICY_MGR_HW_MODE_MAC0_BAND_BITPOS (3)
#define POLICY_MGR_HW_MODE_ID_BITPOS (0)
#define POLICY_MGR_HW_MODE_MAC0_TX_STREAMS_MASK \
(0xf << POLICY_MGR_HW_MODE_MAC0_TX_STREAMS_BITPOS)
@ -76,6 +78,10 @@
(0x1 << POLICY_MGR_HW_MODE_AGILE_DFS_MODE_BITPOS)
#define POLICY_MGR_HW_MODE_SBS_MODE_MASK \
(0x1 << POLICY_MGR_HW_MODE_SBS_MODE_BITPOS)
#define POLICY_MGR_HW_MODE_MAC0_BAND_MASK \
(0x3 << POLICY_MGR_HW_MODE_MAC0_BAND_BITPOS)
#define POLICY_MGR_HW_MODE_ID_MASK \
(0x7 << POLICY_MGR_HW_MODE_ID_BITPOS)
#define POLICY_MGR_HW_MODE_MAC0_TX_STREAMS_SET(hw_mode, value) \
WMI_SET_BITS(hw_mode, POLICY_MGR_HW_MODE_MAC0_TX_STREAMS_BITPOS,\
@ -104,34 +110,46 @@
#define POLICY_MGR_HW_MODE_SBS_MODE_SET(hw_mode, value) \
WMI_SET_BITS(hw_mode, POLICY_MGR_HW_MODE_SBS_MODE_BITPOS,\
1, value)
#define POLICY_MGR_HW_MODE_MAC0_BAND_SET(hw_mode, value) \
WMI_SET_BITS(hw_mode, POLICY_MGR_HW_MODE_MAC0_BAND_BITPOS,\
2, value)
#define POLICY_MGR_HW_MODE_ID_SET(hw_mode, value) \
WMI_SET_BITS(hw_mode, POLICY_MGR_HW_MODE_ID_BITPOS,\
3, value)
#define POLICY_MGR_HW_MODE_MAC0_TX_STREAMS_GET(hw_mode) \
((hw_mode & POLICY_MGR_HW_MODE_MAC0_TX_STREAMS_MASK) >> \
(((hw_mode) & POLICY_MGR_HW_MODE_MAC0_TX_STREAMS_MASK) >> \
POLICY_MGR_HW_MODE_MAC0_TX_STREAMS_BITPOS)
#define POLICY_MGR_HW_MODE_MAC0_RX_STREAMS_GET(hw_mode) \
((hw_mode & POLICY_MGR_HW_MODE_MAC0_RX_STREAMS_MASK) >> \
(((hw_mode) & POLICY_MGR_HW_MODE_MAC0_RX_STREAMS_MASK) >> \
POLICY_MGR_HW_MODE_MAC0_RX_STREAMS_BITPOS)
#define POLICY_MGR_HW_MODE_MAC1_TX_STREAMS_GET(hw_mode) \
((hw_mode & POLICY_MGR_HW_MODE_MAC1_TX_STREAMS_MASK) >> \
(((hw_mode) & POLICY_MGR_HW_MODE_MAC1_TX_STREAMS_MASK) >> \
POLICY_MGR_HW_MODE_MAC1_TX_STREAMS_BITPOS)
#define POLICY_MGR_HW_MODE_MAC1_RX_STREAMS_GET(hw_mode) \
((hw_mode & POLICY_MGR_HW_MODE_MAC1_RX_STREAMS_MASK) >> \
(((hw_mode) & POLICY_MGR_HW_MODE_MAC1_RX_STREAMS_MASK) >> \
POLICY_MGR_HW_MODE_MAC1_RX_STREAMS_BITPOS)
#define POLICY_MGR_HW_MODE_MAC0_BANDWIDTH_GET(hw_mode) \
((hw_mode & POLICY_MGR_HW_MODE_MAC0_BANDWIDTH_MASK) >> \
(((hw_mode) & POLICY_MGR_HW_MODE_MAC0_BANDWIDTH_MASK) >> \
POLICY_MGR_HW_MODE_MAC0_BANDWIDTH_BITPOS)
#define POLICY_MGR_HW_MODE_MAC1_BANDWIDTH_GET(hw_mode) \
((hw_mode & POLICY_MGR_HW_MODE_MAC1_BANDWIDTH_MASK) >> \
(((hw_mode) & POLICY_MGR_HW_MODE_MAC1_BANDWIDTH_MASK) >> \
POLICY_MGR_HW_MODE_MAC1_BANDWIDTH_BITPOS)
#define POLICY_MGR_HW_MODE_DBS_MODE_GET(hw_mode) \
((hw_mode & POLICY_MGR_HW_MODE_DBS_MODE_MASK) >> \
(((hw_mode) & POLICY_MGR_HW_MODE_DBS_MODE_MASK) >> \
POLICY_MGR_HW_MODE_DBS_MODE_BITPOS)
#define POLICY_MGR_HW_MODE_AGILE_DFS_GET(hw_mode) \
((hw_mode & POLICY_MGR_HW_MODE_AGILE_DFS_MODE_MASK) >> \
(((hw_mode) & POLICY_MGR_HW_MODE_AGILE_DFS_MODE_MASK) >> \
POLICY_MGR_HW_MODE_AGILE_DFS_MODE_BITPOS)
#define POLICY_MGR_HW_MODE_SBS_MODE_GET(hw_mode) \
((hw_mode & POLICY_MGR_HW_MODE_SBS_MODE_MASK) >> \
(((hw_mode) & POLICY_MGR_HW_MODE_SBS_MODE_MASK) >> \
POLICY_MGR_HW_MODE_SBS_MODE_BITPOS)
#define POLICY_MGR_HW_MODE_MAC0_BAND_GET(hw_mode) \
(((hw_mode) & POLICY_MGR_HW_MODE_MAC0_BAND_MASK) >> \
POLICY_MGR_HW_MODE_MAC0_BAND_BITPOS)
#define POLICY_MGR_HW_MODE_ID_GET(hw_mode) \
(((hw_mode) & POLICY_MGR_HW_MODE_ID_MASK) >> \
POLICY_MGR_HW_MODE_ID_BITPOS)
#define POLICY_MGR_DEFAULT_HW_MODE_INDEX 0xFFFF
@ -273,14 +291,17 @@ struct policy_mgr_psoc_priv_obj {
/**
* struct policy_mgr_mac_ss_bw_info - hw_mode_list PHY/MAC params for each MAC
* @mac_tx_stream: Max TX stream
* @mac_rx_stream: Max RX stream
* @mac_bw: Max bandwidth
* @mac_tx_stream: Max TX stream number supported on MAC
* @mac_rx_stream: Max RX stream number supported on MAC
* @mac_bw: Max bandwidth(wmi_channel_width enum type)
* @mac_band_cap: supported Band bit map(WLAN_2G_CAPABILITY = 0x1,
* WLAN_5G_CAPABILITY = 0x2)
*/
struct policy_mgr_mac_ss_bw_info {
uint32_t mac_tx_stream;
uint32_t mac_rx_stream;
uint32_t mac_bw;
uint32_t mac_band_cap;
};
struct policy_mgr_psoc_priv_obj *policy_mgr_get_context(