All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v3 2/3] mac80211_hwsim: Add iface comb for DFS
@ 2013-11-05 12:03 Janusz Dziedzic
  2013-11-05 12:03 ` [PATCH v3 3/3] mac80211_hwsim: VHT add 160MHz width support Janusz Dziedzic
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Janusz Dziedzic @ 2013-11-05 12:03 UTC (permalink / raw)
  To: linux-wireless; +Cc: johannes, Janusz Dziedzic

Add iface combination that will allow DFS
support. Add also debugfs dfs_simulate_radar
file that can be used to simulate radar event.
This could be useful for mac80211/cfg80211/
regulatory/hostap code testing without real HW.

Signed-off-by: Janusz Dziedzic <janusz.dziedzic@tieto.com>
---
 drivers/net/wireless/mac80211_hwsim.c |   50 +++++++++++++++++++++++++++------
 1 file changed, 42 insertions(+), 8 deletions(-)

diff --git a/drivers/net/wireless/mac80211_hwsim.c b/drivers/net/wireless/mac80211_hwsim.c
index cb6b98e..8519b13 100644
--- a/drivers/net/wireless/mac80211_hwsim.c
+++ b/drivers/net/wireless/mac80211_hwsim.c
@@ -1868,6 +1868,17 @@ static int hwsim_fops_ps_write(void *dat, u64 val)
 DEFINE_SIMPLE_ATTRIBUTE(hwsim_fops_ps, hwsim_fops_ps_read, hwsim_fops_ps_write,
 			"%llu\n");
 
+static int hwsim_write_simulate_radar(void *dat, u64 val)
+{
+	struct mac80211_hwsim_data *data = dat;
+
+	ieee80211_radar_detected(data->hw);
+
+	return 0;
+}
+
+DEFINE_SIMPLE_ATTRIBUTE(hwsim_simulate_radar, NULL,
+			hwsim_write_simulate_radar, "%llu\n");
 
 static int hwsim_fops_group_read(void *dat, u64 *val)
 {
@@ -2169,11 +2180,28 @@ static const struct ieee80211_iface_limit hwsim_if_limits[] = {
 	{ .max = 1, .types = BIT(NL80211_IFTYPE_P2P_DEVICE) },
 };
 
-static struct ieee80211_iface_combination hwsim_if_comb = {
-	.limits = hwsim_if_limits,
-	.n_limits = ARRAY_SIZE(hwsim_if_limits),
-	.max_interfaces = 2048,
-	.num_different_channels = 1,
+static const struct ieee80211_iface_limit hwsim_if_dfs_limits[] = {
+	{ .max = 8, .types = BIT(NL80211_IFTYPE_AP) },
+};
+
+static struct ieee80211_iface_combination hwsim_if_comb[] = {
+	{
+		.limits = hwsim_if_limits,
+		.n_limits = ARRAY_SIZE(hwsim_if_limits),
+		.max_interfaces = 2048,
+		.num_different_channels = 1,
+	},
+	{
+		.limits = hwsim_if_dfs_limits,
+		.n_limits = ARRAY_SIZE(hwsim_if_dfs_limits),
+		.max_interfaces = 8,
+		.num_different_channels = 1,
+		.radar_detect_widths = BIT(NL80211_CHAN_WIDTH_20_NOHT) |
+				       BIT(NL80211_CHAN_WIDTH_20) |
+				       BIT(NL80211_CHAN_WIDTH_40) |
+				       BIT(NL80211_CHAN_WIDTH_80) |
+				       BIT(NL80211_CHAN_WIDTH_160),
+	}
 };
 
 static int __init init_mac80211_hwsim(void)
@@ -2191,7 +2219,7 @@ static int __init init_mac80211_hwsim(void)
 		return -EINVAL;
 
 	if (channels > 1) {
-		hwsim_if_comb.num_different_channels = channels;
+		hwsim_if_comb[0].num_different_channels = channels;
 		mac80211_hwsim_ops.hw_scan = mac80211_hwsim_hw_scan;
 		mac80211_hwsim_ops.cancel_hw_scan =
 			mac80211_hwsim_cancel_hw_scan;
@@ -2271,13 +2299,15 @@ static int __init init_mac80211_hwsim(void)
 		hw->wiphy->n_addresses = 2;
 		hw->wiphy->addresses = data->addresses;
 
-		hw->wiphy->iface_combinations = &hwsim_if_comb;
-		hw->wiphy->n_iface_combinations = 1;
+		hw->wiphy->iface_combinations = hwsim_if_comb;
+		hw->wiphy->n_iface_combinations = ARRAY_SIZE(hwsim_if_comb);
 
 		if (channels > 1) {
 			hw->wiphy->max_scan_ssids = 255;
 			hw->wiphy->max_scan_ie_len = IEEE80211_MAX_DATA_LEN;
 			hw->wiphy->max_remain_on_channel_duration = 1000;
+			/* For channels > 1 DFS is not allowed */
+			hw->wiphy->n_iface_combinations = 1;
 		}
 
 		INIT_DELAYED_WORK(&data->roc_done, hw_roc_done);
@@ -2511,6 +2541,10 @@ static int __init init_mac80211_hwsim(void)
 				    &hwsim_fops_ps);
 		debugfs_create_file("group", 0666, data->debugfs, data,
 				    &hwsim_fops_group);
+		if (channels == 1)
+			debugfs_create_file("dfs_simulate_radar", 0222,
+					    data->debugfs,
+					    data, &hwsim_simulate_radar);
 
 		tasklet_hrtimer_init(&data->beacon_timer,
 				     mac80211_hwsim_beacon,
-- 
1.7.9.5


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [PATCH v3 3/3] mac80211_hwsim: VHT add 160MHz width support
  2013-11-05 12:03 [PATCH v3 2/3] mac80211_hwsim: Add iface comb for DFS Janusz Dziedzic
@ 2013-11-05 12:03 ` Janusz Dziedzic
  2013-11-05 13:21 ` [PATCH v3 2/3] mac80211_hwsim: Add iface comb for DFS Johannes Berg
  2016-04-14  8:40 ` Johannes Berg
  2 siblings, 0 replies; 4+ messages in thread
From: Janusz Dziedzic @ 2013-11-05 12:03 UTC (permalink / raw)
  To: linux-wireless; +Cc: johannes, Janusz Dziedzic

Add 160MHz width support. This could be
usefull for testing VHT160 DFS functionality.
This could be also usefull in the future when
DFS and non-DFS channels could be mixed.

Signed-off-by: Janusz Dziedzic <janusz.dziedzic@tieto.com>
---
 drivers/net/wireless/mac80211_hwsim.c |    1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/net/wireless/mac80211_hwsim.c b/drivers/net/wireless/mac80211_hwsim.c
index 8519b13..8f24fe8 100644
--- a/drivers/net/wireless/mac80211_hwsim.c
+++ b/drivers/net/wireless/mac80211_hwsim.c
@@ -2389,6 +2389,7 @@ static int __init init_mac80211_hwsim(void)
 			sband->vht_cap.cap =
 				IEEE80211_VHT_CAP_MAX_MPDU_LENGTH_11454 |
 				IEEE80211_VHT_CAP_SUPP_CHAN_WIDTH_160_80PLUS80MHZ |
+				IEEE80211_VHT_CAP_SUPP_CHAN_WIDTH_160MHZ |
 				IEEE80211_VHT_CAP_RXLDPC |
 				IEEE80211_VHT_CAP_SHORT_GI_80 |
 				IEEE80211_VHT_CAP_SHORT_GI_160 |
-- 
1.7.9.5


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH v3 2/3] mac80211_hwsim: Add iface comb for DFS
  2013-11-05 12:03 [PATCH v3 2/3] mac80211_hwsim: Add iface comb for DFS Janusz Dziedzic
  2013-11-05 12:03 ` [PATCH v3 3/3] mac80211_hwsim: VHT add 160MHz width support Janusz Dziedzic
@ 2013-11-05 13:21 ` Johannes Berg
  2016-04-14  8:40 ` Johannes Berg
  2 siblings, 0 replies; 4+ messages in thread
From: Johannes Berg @ 2013-11-05 13:21 UTC (permalink / raw)
  To: Janusz Dziedzic; +Cc: linux-wireless

On Tue, 2013-11-05 at 13:03 +0100, Janusz Dziedzic wrote:
> Add iface combination that will allow DFS
> support. Add also debugfs dfs_simulate_radar
> file that can be used to simulate radar event.
> This could be useful for mac80211/cfg80211/
> regulatory/hostap code testing without real HW.

Ok this seems to run through with channels=2, applied.

However, I think we need to revisit this - it'd be useful to have one
device with channels=2 and another with DFS, for example.

I think Marcel has patches for this though, to allow creating devices
dynamically at runtime.

johannes


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH v3 2/3] mac80211_hwsim: Add iface comb for DFS
  2013-11-05 12:03 [PATCH v3 2/3] mac80211_hwsim: Add iface comb for DFS Janusz Dziedzic
  2013-11-05 12:03 ` [PATCH v3 3/3] mac80211_hwsim: VHT add 160MHz width support Janusz Dziedzic
  2013-11-05 13:21 ` [PATCH v3 2/3] mac80211_hwsim: Add iface comb for DFS Johannes Berg
@ 2016-04-14  8:40 ` Johannes Berg
  2 siblings, 0 replies; 4+ messages in thread
From: Johannes Berg @ 2016-04-14  8:40 UTC (permalink / raw)
  To: Janusz Dziedzic, linux-wireless; +Cc: Ilan Peer

Hi,

I know this is a LONG time ago, but nonetheless...

> -static struct ieee80211_iface_combination hwsim_if_comb = {
> -	.limits = hwsim_if_limits,
> -	.n_limits = ARRAY_SIZE(hwsim_if_limits),
> -	.max_interfaces = 2048,
> -	.num_different_channels = 1,
> +static const struct ieee80211_iface_limit hwsim_if_dfs_limits[] = {
> +	{ .max = 8, .types = BIT(NL80211_IFTYPE_AP) },
> +};
> +
> +static struct ieee80211_iface_combination hwsim_if_comb[] = {
> +	{
> +		.limits = hwsim_if_limits,
> +		.n_limits = ARRAY_SIZE(hwsim_if_limits),
> +		.max_interfaces = 2048,
> +		.num_different_channels = 1,
> +	},
> +	{
> +		.limits = hwsim_if_dfs_limits,
> +		.n_limits = ARRAY_SIZE(hwsim_if_dfs_limits),
> +		.max_interfaces = 8,
> +		.num_different_channels = 1,
> +		.radar_detect_widths =
> BIT(NL80211_CHAN_WIDTH_20_NOHT) |
> +				       BIT(NL80211_CHAN_WIDTH_20) |
> +				       BIT(NL80211_CHAN_WIDTH_40) |
> +				       BIT(NL80211_CHAN_WIDTH_80) |
> +				       BIT(NL80211_CHAN_WIDTH_160),
> +	}
>  };

I don't, at least today, but I don't see relevant changes since then,
understand why this was two combinations, one with fewer interfaces.

It seems that radar detection is mostly independent of the interface
types, at least as far as the code is concerned.

Are there some other considerations, that prevent declaring
radar_detect_widths together with the regular hwsim_if_limits? It
obviously cannot actually be *used* for all?

johannes

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2016-04-14  8:40 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-11-05 12:03 [PATCH v3 2/3] mac80211_hwsim: Add iface comb for DFS Janusz Dziedzic
2013-11-05 12:03 ` [PATCH v3 3/3] mac80211_hwsim: VHT add 160MHz width support Janusz Dziedzic
2013-11-05 13:21 ` [PATCH v3 2/3] mac80211_hwsim: Add iface comb for DFS Johannes Berg
2016-04-14  8:40 ` Johannes Berg

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.