qcacld-3.0: Add SBS support in hw_mode_list
The enhancement is to add SBS (Single Band Simultaneous)
support in hw_mode_list.
The WMI HW Mode definitions are redefined to use only
for host purpose.
Change-Id: I8b8c966b0130964c8e7de7967766629c955209d3
CRs-Fixed: 1072234
diff --git a/core/cds/inc/cds_concurrency.h b/core/cds/inc/cds_concurrency.h
index 429d64e..951abff 100644
--- a/core/cds/inc/cds_concurrency.h
+++ b/core/cds/inc/cds_concurrency.h
@@ -90,7 +90,7 @@
/**
* enum hw_mode_dbs_capab - DBS HW mode capability
* @HW_MODE_DBS_NONE: Non DBS capable
- * @HW_MODE_DBS: DFS capable
+ * @HW_MODE_DBS: DBS capable
*/
enum hw_mode_dbs_capab {
HW_MODE_DBS_NONE,
@@ -108,6 +108,16 @@
};
/**
+ * enum hw_mode_sbs_capab - SBS HW mode capability
+ * @HW_MODE_SBS_NONE: Non SBS capable
+ * @HW_MODE_SBS: SBS capable
+ */
+enum hw_mode_sbs_capab {
+ HW_MODE_SBS_NONE,
+ HW_MODE_SBS,
+};
+
+/**
* enum cds_pcl_group_id - Identifies the pcl groups to be used
* @CDS_PCL_GROUP_ID1_ID2: Use weights of group1 and group2
* @CDS_PCL_GROUP_ID2_ID2: Use weights of group2 and group3
@@ -780,6 +790,7 @@
enum hw_mode_bandwidth mac1_bw,
enum hw_mode_dbs_capab dbs,
enum hw_mode_agile_dfs_capab dfs,
+ enum hw_mode_sbs_capab sbs,
enum sir_conn_update_reason reason);
enum cds_conc_next_action cds_need_opportunistic_upgrade(void);
QDF_STATUS cds_next_actions(uint32_t session_id,
diff --git a/core/cds/src/cds_concurrency.c b/core/cds/src/cds_concurrency.c
index 7504b23..b7f3ab3 100644
--- a/core/cds/src/cds_concurrency.c
+++ b/core/cds/src/cds_concurrency.c
@@ -2485,8 +2485,8 @@
hw_mode.mac0_tx_ss, hw_mode.mac0_rx_ss, hw_mode.mac0_bw);
cds_info("MAC1: TxSS:%d, RxSS:%d, Bw:%d",
hw_mode.mac1_tx_ss, hw_mode.mac1_rx_ss, hw_mode.mac1_bw);
- cds_info("DBS:%d, Agile DFS:%d",
- hw_mode.dbs_cap, hw_mode.agile_dfs_cap);
+ cds_info("DBS:%d, Agile DFS:%d, SBS:%d",
+ hw_mode.dbs_cap, hw_mode.agile_dfs_cap, hw_mode.sbs_cap);
/* update conc_connection_list */
cds_update_hw_mode_conn_info(num_vdev_mac_entries,
@@ -2544,8 +2544,8 @@
hw_mode.mac0_tx_ss, hw_mode.mac0_rx_ss, hw_mode.mac0_bw);
cds_info("MAC1: TxSS:%d, RxSS:%d, Bw:%d",
hw_mode.mac1_tx_ss, hw_mode.mac1_rx_ss, hw_mode.mac1_bw);
- cds_info("DBS:%d, Agile DFS:%d",
- hw_mode.dbs_cap, hw_mode.agile_dfs_cap);
+ cds_info("DBS:%d, Agile DFS:%d, SBS:%d",
+ hw_mode.dbs_cap, hw_mode.agile_dfs_cap, hw_mode.sbs_cap);
/* update conc_connection_list */
cds_update_hw_mode_conn_info(num_vdev_mac_entries,
@@ -2564,6 +2564,7 @@
* @mac1_bw: MAC1 bandwidth configuration
* @dbs: HW DBS capability
* @dfs: HW Agile DFS capability
+ * @sbs: HW SBS capability
* @reason: Reason for connection update
*
* Sends the set hw mode to the SME module which will pass on
@@ -2572,15 +2573,18 @@
* e.g.: To configure 2x2_80
* mac0_ss = HW_MODE_SS_2x2, mac0_bw = HW_MODE_80_MHZ
* mac1_ss = HW_MODE_SS_0x0, mac1_bw = HW_MODE_BW_NONE
- * dbs = HW_MODE_DBS_NONE, dfs = HW_MODE_AGILE_DFS_NONE
+ * dbs = HW_MODE_DBS_NONE, dfs = HW_MODE_AGILE_DFS_NONE,
+ * sbs = HW_MODE_SBS_NONE
* e.g.: To configure 1x1_80_1x1_40 (DBS)
* mac0_ss = HW_MODE_SS_1x1, mac0_bw = HW_MODE_80_MHZ
* mac1_ss = HW_MODE_SS_1x1, mac1_bw = HW_MODE_40_MHZ
- * dbs = HW_MODE_DBS, dfs = HW_MODE_AGILE_DFS_NONE
+ * dbs = HW_MODE_DBS, dfs = HW_MODE_AGILE_DFS_NONE,
+ * sbs = HW_MODE_SBS_NONE
* e.g.: To configure 1x1_80_1x1_40 (Agile DFS)
* mac0_ss = HW_MODE_SS_1x1, mac0_bw = HW_MODE_80_MHZ
* mac1_ss = HW_MODE_SS_1x1, mac1_bw = HW_MODE_40_MHZ
- * dbs = HW_MODE_DBS, dfs = HW_MODE_AGILE_DFS
+ * dbs = HW_MODE_DBS, dfs = HW_MODE_AGILE_DFS,
+ * sbs = HW_MODE_SBS_NONE
*
* Return: Success if the message made it down to the next layer
*/
@@ -2591,6 +2595,7 @@
enum hw_mode_bandwidth mac1_bw,
enum hw_mode_dbs_capab dbs,
enum hw_mode_agile_dfs_capab dfs,
+ enum hw_mode_sbs_capab sbs,
enum sir_conn_update_reason reason)
{
int8_t hw_mode_index;
@@ -2618,7 +2623,7 @@
}
hw_mode_index = wma_get_hw_mode_idx_from_dbs_hw_list(mac0_ss,
- mac0_bw, mac1_ss, mac1_bw, dbs, dfs);
+ mac0_bw, mac1_ss, mac1_bw, dbs, dfs, sbs);
if (hw_mode_index < 0) {
cds_err("Invalid HW mode index obtained");
return QDF_STATUS_E_FAILURE;
@@ -6306,6 +6311,7 @@
HW_MODE_SS_1x1, HW_MODE_40_MHZ,
HW_MODE_DBS,
HW_MODE_AGILE_DFS_NONE,
+ HW_MODE_SBS_NONE,
reason);
break;
case CDS_SINGLE_MAC_UPGRADE:
@@ -6318,6 +6324,7 @@
HW_MODE_SS_0x0, HW_MODE_BW_NONE,
HW_MODE_DBS_NONE,
HW_MODE_AGILE_DFS_NONE,
+ HW_MODE_SBS_NONE,
reason);
/*
* check if we have a beaconing entity that advertised 2x2
@@ -6334,6 +6341,7 @@
HW_MODE_SS_0x0, HW_MODE_BW_NONE,
HW_MODE_DBS_NONE,
HW_MODE_AGILE_DFS_NONE,
+ HW_MODE_SBS_NONE,
reason);
break;
default:
diff --git a/core/hdd/src/wlan_hdd_wext.c b/core/hdd/src/wlan_hdd_wext.c
index 397bdcd..fdb4e5d 100644
--- a/core/hdd/src/wlan_hdd_wext.c
+++ b/core/hdd/src/wlan_hdd_wext.c
@@ -8067,6 +8067,7 @@
HW_MODE_SS_0x0, HW_MODE_BW_NONE,
HW_MODE_DBS_NONE,
HW_MODE_AGILE_DFS_NONE,
+ HW_MODE_SBS_NONE,
SIR_UPDATE_REASON_UT);
} else if (apps_args[0] == 1) {
hdd_err("set hw mode for dual mac");
@@ -8077,6 +8078,7 @@
HW_MODE_SS_1x1, HW_MODE_40_MHZ,
HW_MODE_DBS,
HW_MODE_AGILE_DFS_NONE,
+ HW_MODE_SBS_NONE,
SIR_UPDATE_REASON_UT);
}
}
diff --git a/core/mac/inc/sir_api.h b/core/mac/inc/sir_api.h
index 58d0cd2..9610a22 100644
--- a/core/mac/inc/sir_api.h
+++ b/core/mac/inc/sir_api.h
@@ -3333,6 +3333,7 @@
uint8_t mac1_bw;
uint8_t dbs_cap;
uint8_t agile_dfs_cap;
+ uint8_t sbs_cap;
};
/**
diff --git a/core/wma/inc/wma.h b/core/wma/inc/wma.h
index d2f86a0..9185784 100644
--- a/core/wma/inc/wma.h
+++ b/core/wma/inc/wma.h
@@ -390,6 +390,94 @@
#define WMA_DEFAULT_HW_MODE_INDEX 0xFFFF
/**
+ * WMA hardware mode list bit-mask definitions.
+ * Bits 4:0, 31:29 are unused.
+ *
+ * The below definitions are added corresponding to WMI DBS HW mode
+ * list to make it independent of firmware changes for WMI definitions.
+ * Currently these definitions have dependency with BIT positions of
+ * the existing WMI macros. Thus, if the BIT positions are changed for
+ * WMI macros, then these macros' BIT definitions are also need to be
+ * changed.
+ */
+#define WMA_HW_MODE_MAC0_TX_STREAMS_BITPOS (28)
+#define WMA_HW_MODE_MAC0_RX_STREAMS_BITPOS (24)
+#define WMA_HW_MODE_MAC1_TX_STREAMS_BITPOS (20)
+#define WMA_HW_MODE_MAC1_RX_STREAMS_BITPOS (16)
+#define WMA_HW_MODE_MAC0_BANDWIDTH_BITPOS (12)
+#define WMA_HW_MODE_MAC1_BANDWIDTH_BITPOS (8)
+#define WMA_HW_MODE_DBS_MODE_BITPOS (7)
+#define WMA_HW_MODE_AGILE_DFS_MODE_BITPOS (6)
+#define WMA_HW_MODE_SBS_MODE_BITPOS (5)
+
+#define WMA_HW_MODE_MAC0_TX_STREAMS_MASK \
+ (0xf << WMA_HW_MODE_MAC0_TX_STREAMS_BITPOS)
+#define WMA_HW_MODE_MAC0_RX_STREAMS_MASK \
+ (0xf << WMA_HW_MODE_MAC0_RX_STREAMS_BITPOS)
+#define WMA_HW_MODE_MAC1_TX_STREAMS_MASK \
+ (0xf << WMA_HW_MODE_MAC1_TX_STREAMS_BITPOS)
+#define WMA_HW_MODE_MAC1_RX_STREAMS_MASK \
+ (0xf << WMA_HW_MODE_MAC1_RX_STREAMS_BITPOS)
+#define WMA_HW_MODE_MAC0_BANDWIDTH_MASK \
+ (0xf << WMA_HW_MODE_MAC0_BANDWIDTH_BITPOS)
+#define WMA_HW_MODE_MAC1_BANDWIDTH_MASK \
+ (0xf << WMA_HW_MODE_MAC1_BANDWIDTH_BITPOS)
+#define WMA_HW_MODE_DBS_MODE_MASK \
+ (0x1 << WMA_HW_MODE_DBS_MODE_BITPOS)
+#define WMA_HW_MODE_AGILE_DFS_MODE_MASK \
+ (0x1 << WMA_HW_MODE_AGILE_DFS_MODE_BITPOS)
+#define WMA_HW_MODE_SBS_MODE_MASK \
+ (0x1 << WMA_HW_MODE_SBS_MODE_BITPOS)
+
+#define WMA_HW_MODE_MAC0_TX_STREAMS_SET(hw_mode, value) \
+ WMI_SET_BITS(hw_mode, WMA_HW_MODE_MAC0_TX_STREAMS_BITPOS, 4, value)
+#define WMA_HW_MODE_MAC0_RX_STREAMS_SET(hw_mode, value) \
+ WMI_SET_BITS(hw_mode, WMA_HW_MODE_MAC0_RX_STREAMS_BITPOS, 4, value)
+#define WMA_HW_MODE_MAC1_TX_STREAMS_SET(hw_mode, value) \
+ WMI_SET_BITS(hw_mode, WMA_HW_MODE_MAC1_TX_STREAMS_BITPOS, 4, value)
+#define WMA_HW_MODE_MAC1_RX_STREAMS_SET(hw_mode, value) \
+ WMI_SET_BITS(hw_mode, WMA_HW_MODE_MAC1_RX_STREAMS_BITPOS, 4, value)
+#define WMA_HW_MODE_MAC0_BANDWIDTH_SET(hw_mode, value) \
+ WMI_SET_BITS(hw_mode, WMA_HW_MODE_MAC0_BANDWIDTH_BITPOS, 4, value)
+#define WMA_HW_MODE_MAC1_BANDWIDTH_SET(hw_mode, value) \
+ WMI_SET_BITS(hw_mode, WMA_HW_MODE_MAC1_BANDWIDTH_BITPOS, 4, value)
+#define WMA_HW_MODE_DBS_MODE_SET(hw_mode, value) \
+ WMI_SET_BITS(hw_mode, WMA_HW_MODE_DBS_MODE_BITPOS, 1, value)
+#define WMA_HW_MODE_AGILE_DFS_SET(hw_mode, value) \
+ WMI_SET_BITS(hw_mode, WMA_HW_MODE_AGILE_DFS_MODE_BITPOS, 1, value)
+#define WMA_HW_MODE_SBS_MODE_SET(hw_mode, value) \
+ WMI_SET_BITS(hw_mode, WMA_HW_MODE_SBS_MODE_BITPOS, 1, value)
+
+#define WMA_HW_MODE_MAC0_TX_STREAMS_GET(hw_mode) \
+ ((hw_mode & WMA_HW_MODE_MAC0_TX_STREAMS_MASK) >> \
+ WMA_HW_MODE_MAC0_TX_STREAMS_BITPOS)
+#define WMA_HW_MODE_MAC0_RX_STREAMS_GET(hw_mode) \
+ ((hw_mode & WMA_HW_MODE_MAC0_RX_STREAMS_MASK) >> \
+ WMA_HW_MODE_MAC0_RX_STREAMS_BITPOS)
+#define WMA_HW_MODE_MAC1_TX_STREAMS_GET(hw_mode) \
+ ((hw_mode & WMA_HW_MODE_MAC1_TX_STREAMS_MASK) >> \
+ WMA_HW_MODE_MAC1_TX_STREAMS_BITPOS)
+#define WMA_HW_MODE_MAC1_RX_STREAMS_GET(hw_mode) \
+ ((hw_mode & WMA_HW_MODE_MAC1_RX_STREAMS_MASK) >> \
+ WMA_HW_MODE_MAC1_RX_STREAMS_BITPOS)
+#define WMA_HW_MODE_MAC0_BANDWIDTH_GET(hw_mode) \
+ ((hw_mode & WMA_HW_MODE_MAC0_BANDWIDTH_MASK) >> \
+ WMA_HW_MODE_MAC0_BANDWIDTH_BITPOS)
+#define WMA_HW_MODE_MAC1_BANDWIDTH_GET(hw_mode) \
+ ((hw_mode & WMA_HW_MODE_MAC1_BANDWIDTH_MASK) >> \
+ WMA_HW_MODE_MAC1_BANDWIDTH_BITPOS)
+#define WMA_HW_MODE_DBS_MODE_GET(hw_mode) \
+ ((hw_mode & WMA_HW_MODE_DBS_MODE_MASK) >> \
+ WMA_HW_MODE_DBS_MODE_BITPOS)
+#define WMA_HW_MODE_AGILE_DFS_GET(hw_mode) \
+ ((hw_mode & WMA_HW_MODE_AGILE_DFS_MODE_MASK) >> \
+ WMA_HW_MODE_AGILE_DFS_MODE_BITPOS)
+#define WMA_HW_MODE_SBS_MODE_GET(hw_mode) \
+ ((hw_mode & WMA_HW_MODE_SBS_MODE_MASK) >> \
+ WMA_HW_MODE_SBS_MODE_BITPOS)
+
+
+/**
* struct probeTime_dwellTime - probe time, dwell time map
* @dwell_time: dwell time
* @probe_time: repeat probe time
diff --git a/core/wma/inc/wma_api.h b/core/wma/inc/wma_api.h
index 295973b..890622b 100644
--- a/core/wma/inc/wma_api.h
+++ b/core/wma/inc/wma_api.h
@@ -187,7 +187,8 @@
enum hw_mode_ss_config mac1_ss,
enum hw_mode_bandwidth mac1_bw,
enum hw_mode_dbs_capab dbs,
- enum hw_mode_agile_dfs_capab dfs);
+ enum hw_mode_agile_dfs_capab dfs,
+ enum hw_mode_sbs_capab sbs);
QDF_STATUS wma_get_hw_mode_from_idx(uint32_t idx,
struct sir_hw_mode_params *hw_mode);
int8_t wma_get_num_dbs_hw_modes(void);
diff --git a/core/wma/src/wma_main.c b/core/wma/src/wma_main.c
index 3b5f543..3d65f13 100644
--- a/core/wma/src/wma_main.c
+++ b/core/wma/src/wma_main.c
@@ -4298,16 +4298,17 @@
param = wma_handle->hw_mode.hw_mode_list[i];
WMA_LOGA("%s:[%d]-MAC0: tx_ss:%d rx_ss:%d bw_idx:%d",
__func__, i,
- WMI_DBS_HW_MODE_MAC0_TX_STREAMS_GET(param),
- WMI_DBS_HW_MODE_MAC0_RX_STREAMS_GET(param),
- WMI_DBS_HW_MODE_MAC0_BANDWIDTH_GET(param));
+ WMA_HW_MODE_MAC0_TX_STREAMS_GET(param),
+ WMA_HW_MODE_MAC0_RX_STREAMS_GET(param),
+ WMA_HW_MODE_MAC0_BANDWIDTH_GET(param));
WMA_LOGA("%s:[%d]-MAC1: tx_ss:%d rx_ss:%d bw_idx:%d",
__func__, i,
- WMI_DBS_HW_MODE_MAC1_TX_STREAMS_GET(param),
- WMI_DBS_HW_MODE_MAC1_RX_STREAMS_GET(param),
- WMI_DBS_HW_MODE_MAC1_BANDWIDTH_GET(param));
- WMA_LOGA("%s:[%d] DBS:%d", __func__, i,
- WMI_DBS_HW_MODE_DBS_MODE_GET(param));
+ WMA_HW_MODE_MAC1_TX_STREAMS_GET(param),
+ WMA_HW_MODE_MAC1_RX_STREAMS_GET(param),
+ WMA_HW_MODE_MAC1_BANDWIDTH_GET(param));
+ WMA_LOGA("%s:[%d] DBS:%d SBS:%d", __func__, i,
+ WMA_HW_MODE_DBS_MODE_GET(param),
+ WMA_HW_MODE_SBS_MODE_GET(param));
}
}
@@ -5018,6 +5019,7 @@
* @mac1_ss_bw_info: TX-RX streams, BW for MAC1
* @pos: refers to hw_mode_index
* @dbs_mode: dbs_mode for the dbs_hw_mode
+ * @sbs_mode: sbs_mode for the sbs_hw_mode
*
* This function sets TX-RX stream, bandwidth and DBS mode in
* hw_mode_list.
@@ -5027,32 +5029,36 @@
static void wma_set_hw_mode_params(t_wma_handle *wma_handle,
struct mac_ss_bw_info mac0_ss_bw_info,
struct mac_ss_bw_info mac1_ss_bw_info,
- uint32_t pos, uint32_t dbs_mode)
+ uint32_t pos, uint32_t dbs_mode,
+ uint32_t sbs_mode)
{
- WMI_DBS_HW_MODE_MAC0_TX_STREAMS_SET(
+ WMA_HW_MODE_MAC0_TX_STREAMS_SET(
wma_handle->hw_mode.hw_mode_list[pos],
mac0_ss_bw_info.mac_tx_stream);
- WMI_DBS_HW_MODE_MAC0_RX_STREAMS_SET(
+ WMA_HW_MODE_MAC0_RX_STREAMS_SET(
wma_handle->hw_mode.hw_mode_list[pos],
mac0_ss_bw_info.mac_rx_stream);
- WMI_DBS_HW_MODE_MAC0_BANDWIDTH_SET(
+ WMA_HW_MODE_MAC0_BANDWIDTH_SET(
wma_handle->hw_mode.hw_mode_list[pos],
mac0_ss_bw_info.mac_bw);
- WMI_DBS_HW_MODE_MAC1_TX_STREAMS_SET(
+ WMA_HW_MODE_MAC1_TX_STREAMS_SET(
wma_handle->hw_mode.hw_mode_list[pos],
mac1_ss_bw_info.mac_tx_stream);
- WMI_DBS_HW_MODE_MAC1_RX_STREAMS_SET(
+ WMA_HW_MODE_MAC1_RX_STREAMS_SET(
wma_handle->hw_mode.hw_mode_list[pos],
mac1_ss_bw_info.mac_rx_stream);
- WMI_DBS_HW_MODE_MAC1_BANDWIDTH_SET(
+ WMA_HW_MODE_MAC1_BANDWIDTH_SET(
wma_handle->hw_mode.hw_mode_list[pos],
mac1_ss_bw_info.mac_bw);
- WMI_DBS_HW_MODE_DBS_MODE_SET(
+ WMA_HW_MODE_DBS_MODE_SET(
wma_handle->hw_mode.hw_mode_list[pos],
dbs_mode);
- WMI_DBS_HW_MODE_AGILE_DFS_SET(
+ WMA_HW_MODE_AGILE_DFS_SET(
wma_handle->hw_mode.hw_mode_list[pos],
- 0);
+ HW_MODE_AGILE_DFS_NONE);
+ WMA_HW_MODE_SBS_MODE_SET(
+ wma_handle->hw_mode.hw_mode_list[pos],
+ sbs_mode);
}
/**
@@ -5068,7 +5074,8 @@
{
struct extended_caps *phy_caps;
WMI_MAC_PHY_CAPABILITIES *tmp;
- uint32_t i, dbs_mode, hw_config_type, j = 0;
+ uint32_t i, hw_config_type, j = 0;
+ uint32_t dbs_mode, sbs_mode;
struct mac_ss_bw_info mac0_ss_bw_info = {0};
struct mac_ss_bw_info mac1_ss_bw_info = {0};
@@ -5117,7 +5124,8 @@
wma_get_hw_mode_params(tmp, &mac0_ss_bw_info);
hw_config_type =
phy_caps->each_hw_mode_cap[i].hw_mode_config_type;
- dbs_mode = 0;
+ dbs_mode = HW_MODE_DBS_NONE;
+ sbs_mode = HW_MODE_SBS_NONE;
mac1_ss_bw_info.mac_tx_stream = 0;
mac1_ss_bw_info.mac_rx_stream = 0;
mac1_ss_bw_info.mac_bw = 0;
@@ -5129,12 +5137,17 @@
/* Update for MAC1 */
tmp = &phy_caps->each_phy_cap_per_hwmode[j++];
wma_get_hw_mode_params(tmp, &mac1_ss_bw_info);
- dbs_mode = 1;
+ if (hw_config_type == WMI_HW_MODE_DBS)
+ dbs_mode = HW_MODE_DBS;
+ if ((hw_config_type == WMI_HW_MODE_SBS_PASSIVE) ||
+ (hw_config_type == WMI_HW_MODE_SBS))
+ sbs_mode = HW_MODE_SBS;
}
/* Updating HW mode list */
wma_set_hw_mode_params(wma_handle, mac0_ss_bw_info,
- mac1_ss_bw_info, i, dbs_mode);
+ mac1_ss_bw_info, i, dbs_mode,
+ sbs_mode);
}
wma_dump_dbs_hw_mode(wma_handle);
return QDF_STATUS_SUCCESS;
diff --git a/core/wma/src/wma_utils.c b/core/wma/src/wma_utils.c
index b4aab11..fd9254d 100644
--- a/core/wma/src/wma_utils.c
+++ b/core/wma/src/wma_utils.c
@@ -2534,6 +2534,7 @@
* @mac1_bw: Bandwidth of MAC1 of type 'hw_mode_bandwidth'
* @dbs: DBS capability of type 'hw_mode_dbs_capab'
* @dfs: Agile DFS capability of type 'hw_mode_agile_dfs_capab'
+ * @sbs: SBS capability of type 'hw_mode_sbs_capab'
*
* Fetches the HW mode index corresponding to the HW mode provided
*
@@ -2546,12 +2547,13 @@
uint32_t mac1_tx_ss, uint32_t mac1_rx_ss,
enum hw_mode_bandwidth mac1_bw,
enum hw_mode_dbs_capab dbs,
- enum hw_mode_agile_dfs_capab dfs)
+ enum hw_mode_agile_dfs_capab dfs,
+ enum hw_mode_sbs_capab sbs)
{
uint32_t i;
uint32_t t_mac0_tx_ss, t_mac0_rx_ss, t_mac0_bw;
uint32_t t_mac1_tx_ss, t_mac1_rx_ss, t_mac1_bw;
- uint32_t dbs_mode, agile_dfs_mode;
+ uint32_t dbs_mode, agile_dfs_mode, sbs_mode;
int8_t found = -EINVAL;
if (!wma) {
@@ -2560,17 +2562,17 @@
}
for (i = 0; i < wma->num_dbs_hw_modes; i++) {
- t_mac0_tx_ss = WMI_DBS_HW_MODE_MAC0_TX_STREAMS_GET(
+ t_mac0_tx_ss = WMA_HW_MODE_MAC0_TX_STREAMS_GET(
wma->hw_mode.hw_mode_list[i]);
if (t_mac0_tx_ss != mac0_tx_ss)
continue;
- t_mac0_rx_ss = WMI_DBS_HW_MODE_MAC0_RX_STREAMS_GET(
+ t_mac0_rx_ss = WMA_HW_MODE_MAC0_RX_STREAMS_GET(
wma->hw_mode.hw_mode_list[i]);
if (t_mac0_rx_ss != mac0_rx_ss)
continue;
- t_mac0_bw = WMI_DBS_HW_MODE_MAC0_BANDWIDTH_GET(
+ t_mac0_bw = WMA_HW_MODE_MAC0_BANDWIDTH_GET(
wma->hw_mode.hw_mode_list[i]);
/*
* Firmware advertises max bw capability as CBW 80+80
@@ -2580,31 +2582,36 @@
if (t_mac0_bw < mac0_bw)
continue;
- t_mac1_tx_ss = WMI_DBS_HW_MODE_MAC1_TX_STREAMS_GET(
+ t_mac1_tx_ss = WMA_HW_MODE_MAC1_TX_STREAMS_GET(
wma->hw_mode.hw_mode_list[i]);
if (t_mac1_tx_ss != mac1_tx_ss)
continue;
- t_mac1_rx_ss = WMI_DBS_HW_MODE_MAC1_RX_STREAMS_GET(
+ t_mac1_rx_ss = WMA_HW_MODE_MAC1_RX_STREAMS_GET(
wma->hw_mode.hw_mode_list[i]);
if (t_mac1_rx_ss != mac1_rx_ss)
continue;
- t_mac1_bw = WMI_DBS_HW_MODE_MAC1_BANDWIDTH_GET(
+ t_mac1_bw = WMA_HW_MODE_MAC1_BANDWIDTH_GET(
wma->hw_mode.hw_mode_list[i]);
if (t_mac1_bw < mac1_bw)
continue;
- dbs_mode = WMI_DBS_HW_MODE_DBS_MODE_GET(
+ dbs_mode = WMA_HW_MODE_DBS_MODE_GET(
wma->hw_mode.hw_mode_list[i]);
if (dbs_mode != dbs)
continue;
- agile_dfs_mode = WMI_DBS_HW_MODE_AGILE_DFS_GET(
+ agile_dfs_mode = WMA_HW_MODE_AGILE_DFS_GET(
wma->hw_mode.hw_mode_list[i]);
if (agile_dfs_mode != dfs)
continue;
+ sbs_mode = WMA_HW_MODE_SBS_MODE_GET(
+ wma->hw_mode.hw_mode_list[i]);
+ if (sbs_mode != sbs)
+ continue;
+
found = i;
WMA_LOGI("%s: hw_mode index %d found",
__func__, i);
@@ -2621,9 +2628,10 @@
* @mac1_bw: MAC1 bandwidth configuration
* @dbs: HW DBS capability
* @dfs: HW Agile DFS capability
+ * @sbs: HW SBS capability
*
* Get the HW mode index corresponding to the HW modes spatial stream,
- * bandwidth, DBS and Agile DFS capability
+ * bandwidth, DBS, Agile DFS and SBS capability
*
* Return: Index number if a match is found or -negative value if not found
*/
@@ -2632,7 +2640,8 @@
enum hw_mode_ss_config mac1_ss,
enum hw_mode_bandwidth mac1_bw,
enum hw_mode_dbs_capab dbs,
- enum hw_mode_agile_dfs_capab dfs)
+ enum hw_mode_agile_dfs_capab dfs,
+ enum hw_mode_sbs_capab sbs)
{
tp_wma_handle wma;
uint32_t mac0_tx_ss, mac0_rx_ss;
@@ -2651,14 +2660,14 @@
__func__, mac0_tx_ss, mac0_rx_ss, mac0_bw);
WMA_LOGI("%s: MAC1: TxSS=%d, RxSS=%d, BW=%d",
__func__, mac1_tx_ss, mac1_rx_ss, mac1_bw);
- WMA_LOGI("%s: DBS capab=%d, Agile DFS capab=%d",
- __func__, dbs, dfs);
+ WMA_LOGI("%s: DBS=%d, Agile DFS=%d, SBS=%d",
+ __func__, dbs, dfs, sbs);
return wma_get_matching_hw_mode_index(wma, mac0_tx_ss, mac0_rx_ss,
mac0_bw,
mac1_tx_ss, mac1_rx_ss,
mac1_bw,
- dbs, dfs);
+ dbs, dfs, sbs);
}
/**
@@ -2694,14 +2703,15 @@
param = wma->hw_mode.hw_mode_list[idx];
- hw_mode->mac0_tx_ss = WMI_DBS_HW_MODE_MAC0_TX_STREAMS_GET(param);
- hw_mode->mac0_rx_ss = WMI_DBS_HW_MODE_MAC0_RX_STREAMS_GET(param);
- hw_mode->mac0_bw = WMI_DBS_HW_MODE_MAC0_BANDWIDTH_GET(param);
- hw_mode->mac1_tx_ss = WMI_DBS_HW_MODE_MAC1_TX_STREAMS_GET(param);
- hw_mode->mac1_rx_ss = WMI_DBS_HW_MODE_MAC1_RX_STREAMS_GET(param);
- hw_mode->mac1_bw = WMI_DBS_HW_MODE_MAC1_BANDWIDTH_GET(param);
- hw_mode->dbs_cap = WMI_DBS_HW_MODE_DBS_MODE_GET(param);
- hw_mode->agile_dfs_cap = WMI_DBS_HW_MODE_AGILE_DFS_GET(param);
+ hw_mode->mac0_tx_ss = WMA_HW_MODE_MAC0_TX_STREAMS_GET(param);
+ hw_mode->mac0_rx_ss = WMA_HW_MODE_MAC0_RX_STREAMS_GET(param);
+ hw_mode->mac0_bw = WMA_HW_MODE_MAC0_BANDWIDTH_GET(param);
+ hw_mode->mac1_tx_ss = WMA_HW_MODE_MAC1_TX_STREAMS_GET(param);
+ hw_mode->mac1_rx_ss = WMA_HW_MODE_MAC1_RX_STREAMS_GET(param);
+ hw_mode->mac1_bw = WMA_HW_MODE_MAC1_BANDWIDTH_GET(param);
+ hw_mode->dbs_cap = WMA_HW_MODE_DBS_MODE_GET(param);
+ hw_mode->agile_dfs_cap = WMA_HW_MODE_AGILE_DFS_GET(param);
+ hw_mode->sbs_cap = WMA_HW_MODE_SBS_MODE_GET(param);
return QDF_STATUS_SUCCESS;
}
@@ -2763,7 +2773,7 @@
for (i = 0; i < wma->num_dbs_hw_modes; i++) {
param = wma->hw_mode.hw_mode_list[i];
WMA_LOGI("%s: HW param: %x", __func__, param);
- if (WMI_DBS_HW_MODE_DBS_MODE_GET(param)) {
+ if (WMA_HW_MODE_DBS_MODE_GET(param)) {
WMA_LOGI("%s: HW (%d) is DBS capable", __func__, i);
found = 1;
break;
@@ -2866,14 +2876,14 @@
wma->interfaces[vdev_id].mac_id = mac_id;
if (mac_id == 0) {
wma->interfaces[vdev_id].tx_streams =
- WMI_DBS_HW_MODE_MAC0_TX_STREAMS_GET(param);
+ WMA_HW_MODE_MAC0_TX_STREAMS_GET(param);
wma->interfaces[vdev_id].rx_streams =
- WMI_DBS_HW_MODE_MAC0_RX_STREAMS_GET(param);
+ WMA_HW_MODE_MAC0_RX_STREAMS_GET(param);
} else {
wma->interfaces[vdev_id].tx_streams =
- WMI_DBS_HW_MODE_MAC1_TX_STREAMS_GET(param);
+ WMA_HW_MODE_MAC1_TX_STREAMS_GET(param);
wma->interfaces[vdev_id].rx_streams =
- WMI_DBS_HW_MODE_MAC1_RX_STREAMS_GET(param);
+ WMA_HW_MODE_MAC1_RX_STREAMS_GET(param);
}
}
@@ -2929,15 +2939,15 @@
uint32_t t_conf1_tx_ss, t_conf1_rx_ss;
uint32_t dbs_mode;
- t_conf0_tx_ss = WMI_DBS_HW_MODE_MAC0_TX_STREAMS_GET(
+ t_conf0_tx_ss = WMA_HW_MODE_MAC0_TX_STREAMS_GET(
wma->hw_mode.hw_mode_list[i]);
- t_conf0_rx_ss = WMI_DBS_HW_MODE_MAC0_RX_STREAMS_GET(
+ t_conf0_rx_ss = WMA_HW_MODE_MAC0_RX_STREAMS_GET(
wma->hw_mode.hw_mode_list[i]);
- t_conf1_tx_ss = WMI_DBS_HW_MODE_MAC1_TX_STREAMS_GET(
+ t_conf1_tx_ss = WMA_HW_MODE_MAC1_TX_STREAMS_GET(
wma->hw_mode.hw_mode_list[i]);
- t_conf1_rx_ss = WMI_DBS_HW_MODE_MAC1_RX_STREAMS_GET(
+ t_conf1_rx_ss = WMA_HW_MODE_MAC1_RX_STREAMS_GET(
wma->hw_mode.hw_mode_list[i]);
- dbs_mode = WMI_DBS_HW_MODE_DBS_MODE_GET(
+ dbs_mode = WMA_HW_MODE_DBS_MODE_GET(
wma->hw_mode.hw_mode_list[i]);
if (((((t_conf0_tx_ss == conf1_tx_ss) &&
diff --git a/core/wma/src/wma_utils_ut.c b/core/wma/src/wma_utils_ut.c
index 45db586..8eb5e3d 100644
--- a/core/wma/src/wma_utils_ut.c
+++ b/core/wma/src/wma_utils_ut.c
@@ -73,7 +73,7 @@
}
for (i = 0; i < wma->num_dbs_hw_modes; i++) {
- WMI_DBS_HW_MODE_DBS_MODE_SET(wma->hw_mode.hw_mode_list[i],
+ WMA_HW_MODE_DBS_MODE_SET(wma->hw_mode.hw_mode_list[i],
dbs);
}