Commit 9cf0a0b4 authored by Alexei Avshalom Lazar's avatar Alexei Avshalom Lazar Committed by Johannes Berg

cfg80211: Add support for 60GHz band channels 5 and 6

The current support in the 60GHz band is for channels 1-4.
Add support for channels 5 and 6.
This requires enlarging ieee80211_channel.center_freq from u16 to u32.
Signed-off-by: default avatarAlexei Avshalom Lazar <ailizaro@codeaurora.org>
Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
parent 21a5d4c3
...@@ -1436,7 +1436,7 @@ static int wil_freq_debugfs_show(struct seq_file *s, void *data) ...@@ -1436,7 +1436,7 @@ static int wil_freq_debugfs_show(struct seq_file *s, void *data)
{ {
struct wil6210_priv *wil = s->private; struct wil6210_priv *wil = s->private;
struct wireless_dev *wdev = wil->main_ndev->ieee80211_ptr; struct wireless_dev *wdev = wil->main_ndev->ieee80211_ptr;
u16 freq = wdev->chandef.chan ? wdev->chandef.chan->center_freq : 0; u32 freq = wdev->chandef.chan ? wdev->chandef.chan->center_freq : 0;
seq_printf(s, "Freq = %d\n", freq); seq_printf(s, "Freq = %d\n", freq);
......
...@@ -149,7 +149,7 @@ enum ieee80211_channel_flags { ...@@ -149,7 +149,7 @@ enum ieee80211_channel_flags {
*/ */
struct ieee80211_channel { struct ieee80211_channel {
enum nl80211_band band; enum nl80211_band band;
u16 center_freq; u32 center_freq;
u16 hw_value; u16 hw_value;
u32 flags; u32 flags;
int max_antenna_gain; int max_antenna_gain;
......
...@@ -4338,7 +4338,7 @@ enum nl80211_txrate_gi { ...@@ -4338,7 +4338,7 @@ enum nl80211_txrate_gi {
* enum nl80211_band - Frequency band * enum nl80211_band - Frequency band
* @NL80211_BAND_2GHZ: 2.4 GHz ISM band * @NL80211_BAND_2GHZ: 2.4 GHz ISM band
* @NL80211_BAND_5GHZ: around 5 GHz band (4.9 - 5.7 GHz) * @NL80211_BAND_5GHZ: around 5 GHz band (4.9 - 5.7 GHz)
* @NL80211_BAND_60GHZ: around 60 GHz band (58.32 - 64.80 GHz) * @NL80211_BAND_60GHZ: around 60 GHz band (58.32 - 69.12 GHz)
* @NUM_NL80211_BANDS: number of bands, avoid using this in userspace * @NUM_NL80211_BANDS: number of bands, avoid using this in userspace
* since newer kernel versions may support more bands * since newer kernel versions may support more bands
*/ */
......
...@@ -3301,7 +3301,7 @@ void regulatory_hint_disconnect(void) ...@@ -3301,7 +3301,7 @@ void regulatory_hint_disconnect(void)
restore_regulatory_settings(false); restore_regulatory_settings(false);
} }
static bool freq_is_chan_12_13_14(u16 freq) static bool freq_is_chan_12_13_14(u32 freq)
{ {
if (freq == ieee80211_channel_to_frequency(12, NL80211_BAND_2GHZ) || if (freq == ieee80211_channel_to_frequency(12, NL80211_BAND_2GHZ) ||
freq == ieee80211_channel_to_frequency(13, NL80211_BAND_2GHZ) || freq == ieee80211_channel_to_frequency(13, NL80211_BAND_2GHZ) ||
......
...@@ -112,7 +112,7 @@ ...@@ -112,7 +112,7 @@
} while (0) } while (0)
#define CHAN_ENTRY __field(enum nl80211_band, band) \ #define CHAN_ENTRY __field(enum nl80211_band, band) \
__field(u16, center_freq) __field(u32, center_freq)
#define CHAN_ASSIGN(chan) \ #define CHAN_ASSIGN(chan) \
do { \ do { \
if (chan) { \ if (chan) { \
......
...@@ -88,7 +88,7 @@ int ieee80211_channel_to_frequency(int chan, enum nl80211_band band) ...@@ -88,7 +88,7 @@ int ieee80211_channel_to_frequency(int chan, enum nl80211_band band)
return 5000 + chan * 5; return 5000 + chan * 5;
break; break;
case NL80211_BAND_60GHZ: case NL80211_BAND_60GHZ:
if (chan < 5) if (chan < 7)
return 56160 + chan * 2160; return 56160 + chan * 2160;
break; break;
default: default:
...@@ -109,7 +109,7 @@ int ieee80211_frequency_to_channel(int freq) ...@@ -109,7 +109,7 @@ int ieee80211_frequency_to_channel(int freq)
return (freq - 4000) / 5; return (freq - 4000) / 5;
else if (freq <= 45000) /* DMG band lower limit */ else if (freq <= 45000) /* DMG band lower limit */
return (freq - 5000) / 5; return (freq - 5000) / 5;
else if (freq >= 58320 && freq <= 64800) else if (freq >= 58320 && freq <= 70200)
return (freq - 56160) / 2160; return (freq - 56160) / 2160;
else else
return 0; return 0;
...@@ -1568,7 +1568,7 @@ bool ieee80211_chandef_to_operating_class(struct cfg80211_chan_def *chandef, ...@@ -1568,7 +1568,7 @@ bool ieee80211_chandef_to_operating_class(struct cfg80211_chan_def *chandef,
} }
/* 56.16 GHz, channel 1..4 */ /* 56.16 GHz, channel 1..4 */
if (freq >= 56160 + 2160 * 1 && freq <= 56160 + 2160 * 4) { if (freq >= 56160 + 2160 * 1 && freq <= 56160 + 2160 * 6) {
if (chandef->width >= NL80211_CHAN_WIDTH_40) if (chandef->width >= NL80211_CHAN_WIDTH_40)
return false; return false;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment