qcacld-3.0: Refine interface combinations advertised in wiphy
Currently, interface combinations are advertised as part of wiphy registration but some of them lead to 3-port/4-port. Refine the concurrencies to advertise only supported combinations as below, 1. Remove SAP+SAP_MAX_OBSS_STA combination 2. Remove the "reserved STA iface which was added to support P2P device". No need to indicate any additional interface count for P2P_DEVICE mode as driver doesn't advertise dedicated P2P_DEVICE support. 3. Add NAN+STA and NAN+SAP combinations also. Change-Id: I7ed594c2b719c243cbe38794b877f77240024620 CRs-Fixed: 3226284
Bu işleme şunda yer alıyor:

işlemeyi yapan:
Madan Koyyalamudi

ebeveyn
5fee5caae3
işleme
7e7cdb3d96
@@ -592,7 +592,7 @@ static const struct ieee80211_txrx_stypes
|
||||
static const struct ieee80211_iface_limit
|
||||
wlan_hdd_sta_iface_limit[] = {
|
||||
{
|
||||
.max = 3, /* p2p0 is a STA as well */
|
||||
.max = 2,
|
||||
.types = BIT(NL80211_IFTYPE_STATION),
|
||||
},
|
||||
};
|
||||
@@ -601,7 +601,7 @@ static const struct ieee80211_iface_limit
|
||||
static const struct ieee80211_iface_limit
|
||||
wlan_hdd_ap_iface_limit[] = {
|
||||
{
|
||||
.max = (QDF_MAX_NO_OF_SAP_MODE + SAP_MAX_OBSS_STA_CNT),
|
||||
.max = (QDF_MAX_NO_OF_SAP_MODE),
|
||||
.types = BIT(NL80211_IFTYPE_AP),
|
||||
},
|
||||
};
|
||||
@@ -619,13 +619,11 @@ static const struct ieee80211_iface_limit
|
||||
},
|
||||
};
|
||||
|
||||
/* STA + AP combination */
|
||||
static const struct ieee80211_iface_limit
|
||||
wlan_hdd_sta_ap_iface_limit[] = {
|
||||
{
|
||||
/* We need 1 extra STA interface for OBSS scan when SAP starts
|
||||
* with HT40 in STA+SAP concurrency mode
|
||||
*/
|
||||
.max = (1 + SAP_MAX_OBSS_STA_CNT),
|
||||
.max = 1,
|
||||
.types = BIT(NL80211_IFTYPE_STATION),
|
||||
},
|
||||
{
|
||||
@@ -634,12 +632,11 @@ static const struct ieee80211_iface_limit
|
||||
},
|
||||
};
|
||||
|
||||
/* STA + P2P combination */
|
||||
/* STA + P2P + P2P combination */
|
||||
static const struct ieee80211_iface_limit
|
||||
wlan_hdd_sta_p2p_iface_limit[] = {
|
||||
{
|
||||
/* One reserved for dedicated P2PDEV usage */
|
||||
.max = 2,
|
||||
.max = 1,
|
||||
.types = BIT(NL80211_IFTYPE_STATION)
|
||||
},
|
||||
{
|
||||
@@ -651,32 +648,26 @@ static const struct ieee80211_iface_limit
|
||||
},
|
||||
};
|
||||
|
||||
/* STA + AP + P2PGO combination */
|
||||
/* STA + AP + P2P combination */
|
||||
static const struct ieee80211_iface_limit
|
||||
wlan_hdd_sta_ap_p2pgo_iface_limit[] = {
|
||||
/* Support for AP+P2PGO interfaces */
|
||||
wlan_hdd_sta_ap_p2p_iface_limit[] = {
|
||||
{
|
||||
.max = 2,
|
||||
.max = 1,
|
||||
.types = BIT(NL80211_IFTYPE_STATION)
|
||||
},
|
||||
{
|
||||
.max = 1,
|
||||
.types = BIT(NL80211_IFTYPE_P2P_GO)
|
||||
.types = BIT(NL80211_IFTYPE_P2P_GO) | BIT(NL80211_IFTYPE_P2P_CLIENT)
|
||||
},
|
||||
{
|
||||
.max = 1,
|
||||
.types = BIT(NL80211_IFTYPE_AP)
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
/* SAP + P2P combination */
|
||||
static const struct ieee80211_iface_limit
|
||||
wlan_hdd_sap_p2p_iface_limit[] = {
|
||||
{
|
||||
/* 1 dedicated for p2p0 which is a STA type */
|
||||
.max = 1,
|
||||
.types = BIT(NL80211_IFTYPE_STATION)
|
||||
},
|
||||
{
|
||||
/* The p2p interface in SAP+P2P can be GO/CLI.
|
||||
* The p2p connection can be formed on p2p0 or p2p-p2p0-x.
|
||||
@@ -694,11 +685,6 @@ wlan_hdd_sap_p2p_iface_limit[] = {
|
||||
/* P2P + P2P combination */
|
||||
static const struct ieee80211_iface_limit
|
||||
wlan_hdd_p2p_p2p_iface_limit[] = {
|
||||
{
|
||||
/* 1 dedicated for p2p0 which is a STA type */
|
||||
.max = 1,
|
||||
.types = BIT(NL80211_IFTYPE_STATION)
|
||||
},
|
||||
{
|
||||
/* The p2p interface in P2P+P2P can be GO/CLI.
|
||||
* For P2P+P2P, the new interfaces are formed on p2p-p2p0-x.
|
||||
@@ -716,20 +702,50 @@ static const struct ieee80211_iface_limit
|
||||
},
|
||||
};
|
||||
|
||||
/* STA + NAN disc combination */
|
||||
static const struct ieee80211_iface_limit
|
||||
wlan_hdd_sta_nan_iface_limit[] = {
|
||||
{
|
||||
/* STA */
|
||||
.max = 1,
|
||||
.types = BIT(NL80211_IFTYPE_STATION)
|
||||
},
|
||||
{
|
||||
/* NAN */
|
||||
.max = 1,
|
||||
.types = BIT(NL80211_IFTYPE_NAN),
|
||||
},
|
||||
};
|
||||
|
||||
/* SAP + NAN disc combination */
|
||||
static const struct ieee80211_iface_limit
|
||||
wlan_hdd_sap_nan_iface_limit[] = {
|
||||
{
|
||||
/* SAP */
|
||||
.max = 1,
|
||||
.types = BIT(NL80211_IFTYPE_AP)
|
||||
},
|
||||
{
|
||||
/* NAN */
|
||||
.max = 1,
|
||||
.types = BIT(NL80211_IFTYPE_NAN),
|
||||
},
|
||||
};
|
||||
|
||||
static struct ieee80211_iface_combination
|
||||
wlan_hdd_iface_combination[] = {
|
||||
/* STA */
|
||||
{
|
||||
.limits = wlan_hdd_sta_iface_limit,
|
||||
.num_different_channels = 2,
|
||||
.max_interfaces = 3,
|
||||
.max_interfaces = 2,
|
||||
.n_limits = ARRAY_SIZE(wlan_hdd_sta_iface_limit),
|
||||
},
|
||||
/* AP */
|
||||
{
|
||||
.limits = wlan_hdd_ap_iface_limit,
|
||||
.num_different_channels = 2,
|
||||
.max_interfaces = (SAP_MAX_OBSS_STA_CNT + QDF_MAX_NO_OF_SAP_MODE),
|
||||
.max_interfaces = (QDF_MAX_NO_OF_SAP_MODE),
|
||||
.n_limits = ARRAY_SIZE(wlan_hdd_ap_iface_limit),
|
||||
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 10, 0)) || \
|
||||
defined(CFG80211_BEACON_INTERVAL_BACKPORT)
|
||||
@@ -747,7 +763,7 @@ static struct ieee80211_iface_combination
|
||||
{
|
||||
.limits = wlan_hdd_sta_ap_iface_limit,
|
||||
.num_different_channels = 2,
|
||||
.max_interfaces = (1 + SAP_MAX_OBSS_STA_CNT + QDF_MAX_NO_OF_SAP_MODE),
|
||||
.max_interfaces = (1 + QDF_MAX_NO_OF_SAP_MODE),
|
||||
.n_limits = ARRAY_SIZE(wlan_hdd_sta_ap_iface_limit),
|
||||
.beacon_int_infra_match = true,
|
||||
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 10, 0)) || \
|
||||
@@ -755,33 +771,31 @@ static struct ieee80211_iface_combination
|
||||
.beacon_int_min_gcd = 1,
|
||||
#endif
|
||||
},
|
||||
/* STA + P2P */
|
||||
/* STA + P2P + P2P */
|
||||
{
|
||||
.limits = wlan_hdd_sta_p2p_iface_limit,
|
||||
.num_different_channels = 2,
|
||||
/* one interface reserved for P2PDEV dedicated usage */
|
||||
.max_interfaces = 4,
|
||||
.max_interfaces = 3,
|
||||
.n_limits = ARRAY_SIZE(wlan_hdd_sta_p2p_iface_limit),
|
||||
.beacon_int_infra_match = true,
|
||||
},
|
||||
/* STA + P2P GO + SAP */
|
||||
/* STA + P2P + SAP */
|
||||
{
|
||||
.limits = wlan_hdd_sta_ap_p2pgo_iface_limit,
|
||||
.limits = wlan_hdd_sta_ap_p2p_iface_limit,
|
||||
/* we can allow 3 channels for three different persona
|
||||
* but due to firmware limitation, allow max 2 concrnt channels.
|
||||
*/
|
||||
.num_different_channels = 2,
|
||||
/* one interface reserved for P2PDEV dedicated usage */
|
||||
.max_interfaces = 4,
|
||||
.n_limits = ARRAY_SIZE(wlan_hdd_sta_ap_p2pgo_iface_limit),
|
||||
.max_interfaces = 3,
|
||||
.n_limits = ARRAY_SIZE(wlan_hdd_sta_ap_p2p_iface_limit),
|
||||
.beacon_int_infra_match = true,
|
||||
},
|
||||
/* SAP + P2P */
|
||||
{
|
||||
.limits = wlan_hdd_sap_p2p_iface_limit,
|
||||
.num_different_channels = 2,
|
||||
/* 1-p2p0 + 1-SAP + 1-P2P (on p2p0 or p2p-p2p0-x) */
|
||||
.max_interfaces = 3,
|
||||
/* 1-SAP + 1-P2P */
|
||||
.max_interfaces = 2,
|
||||
.n_limits = ARRAY_SIZE(wlan_hdd_sap_p2p_iface_limit),
|
||||
.beacon_int_infra_match = true,
|
||||
},
|
||||
@@ -789,8 +803,8 @@ static struct ieee80211_iface_combination
|
||||
{
|
||||
.limits = wlan_hdd_p2p_p2p_iface_limit,
|
||||
.num_different_channels = 2,
|
||||
/* 1-p2p0 + 2-P2P (on p2p-p2p0-x) */
|
||||
.max_interfaces = 3,
|
||||
/* 2-P2P */
|
||||
.max_interfaces = 2,
|
||||
.n_limits = ARRAY_SIZE(wlan_hdd_p2p_p2p_iface_limit),
|
||||
.beacon_int_infra_match = true,
|
||||
},
|
||||
@@ -801,6 +815,21 @@ static struct ieee80211_iface_combination
|
||||
.num_different_channels = 2,
|
||||
.n_limits = ARRAY_SIZE(wlan_hdd_mon_iface_limit),
|
||||
},
|
||||
/* NAN + STA */
|
||||
{
|
||||
.limits = wlan_hdd_sta_nan_iface_limit,
|
||||
.max_interfaces = 2,
|
||||
.num_different_channels = 2,
|
||||
.n_limits = ARRAY_SIZE(wlan_hdd_sta_nan_iface_limit),
|
||||
},
|
||||
/* NAN + SAP */
|
||||
{
|
||||
.limits = wlan_hdd_sap_nan_iface_limit,
|
||||
.num_different_channels = 2,
|
||||
.max_interfaces = 2,
|
||||
.n_limits = ARRAY_SIZE(wlan_hdd_sap_nan_iface_limit),
|
||||
.beacon_int_infra_match = true,
|
||||
},
|
||||
};
|
||||
|
||||
static struct cfg80211_ops wlan_hdd_cfg80211_ops;
|
||||
|
Yeni konuda referans
Bir kullanıcı engelle