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.
Unified · Split
| @@ -1436,7 +1436,7 @@ static int wil_freq_debugfs_show(struct seq_file *s, void *data) · 1435 unmodified lines | ||
| 1436 | 1436 | { |
| 1437 | 1437 | struct wil6210_priv *wil = s->private; |
| 1438 | 1438 | struct wireless_dev *wdev = wil->main_ndev->ieee80211_ptr; |
| 1439 | − u16 freq = wdev->chandef.chan ? wdev->chandef.chan->center_freq : 0; | |
| 1439 | + u32 freq = wdev->chandef.chan ? wdev->chandef.chan->center_freq : 0; | |
| 1440 | 1440 | |
| 1441 | 1441 | seq_printf(s, "Freq = %d\n", freq); |
| 1442 | 1442 | |
| @@ -149,7 +149,7 @@ enum ieee80211_channel_flags { · 148 unmodified lines | ||
| 149 | 149 | */ |
| 150 | 150 | struct ieee80211_channel { |
| 151 | 151 | enum nl80211_band band; |
| 152 | − u16 center_freq; | |
| 152 | + u32 center_freq; | |
| 153 | 153 | u16 hw_value; |
| 154 | 154 | u32 flags; |
| 155 | 155 | int max_antenna_gain; |
| @@ -4338,7 +4338,7 @@ enum nl80211_txrate_gi { · 4337 unmodified lines | ||
| 4338 | 4338 | * enum nl80211_band - Frequency band |
| 4339 | 4339 | * @NL80211_BAND_2GHZ: 2.4 GHz ISM band |
| 4340 | 4340 | * @NL80211_BAND_5GHZ: around 5 GHz band (4.9 - 5.7 GHz) |
| 4341 | − * @NL80211_BAND_60GHZ: around 60 GHz band (58.32 - 64.80 GHz) | |
| 4341 | + * @NL80211_BAND_60GHZ: around 60 GHz band (58.32 - 69.12 GHz) | |
| 4342 | 4342 | * @NUM_NL80211_BANDS: number of bands, avoid using this in userspace |
| 4343 | 4343 | * since newer kernel versions may support more bands |
| 4344 | 4344 | */ |
| @@ -3301,7 +3301,7 @@ void regulatory_hint_disconnect(void) · 3300 unmodified lines | ||
| 3301 | 3301 | restore_regulatory_settings(false); |
| 3302 | 3302 | } |
| 3303 | 3303 | |
| 3304 | −static bool freq_is_chan_12_13_14(u16 freq) | |
| 3304 | +static bool freq_is_chan_12_13_14(u32 freq) | |
| 3305 | 3305 | { |
| 3306 | 3306 | if (freq == ieee80211_channel_to_frequency(12, NL80211_BAND_2GHZ) || |
| 3307 | 3307 | freq == ieee80211_channel_to_frequency(13, NL80211_BAND_2GHZ) || |
| @@ -112,7 +112,7 @@ · 111 unmodified lines | ||
| 112 | 112 | } while (0) |
| 113 | 113 | |
| 114 | 114 | #define CHAN_ENTRY __field(enum nl80211_band, band) \ |
| 115 | − __field(u16, center_freq) | |
| 115 | + __field(u32, center_freq) | |
| 116 | 116 | #define CHAN_ASSIGN(chan) \ |
| 117 | 117 | do { \ |
| 118 | 118 | if (chan) { \ |
| @@ -88,7 +88,7 @@ int ieee80211_channel_to_frequency(int chan, enum nl80211_band band) · 87 unmodified lines | ||
| 88 | 88 | return 5000 + chan * 5; |
| 89 | 89 | break; |
| 90 | 90 | case NL80211_BAND_60GHZ: |
| 91 | − if (chan < 5) | |
| 91 | + if (chan < 7) | |
| 92 | 92 | return 56160 + chan * 2160; |
| 93 | 93 | break; |
| 94 | 94 | default: |
| @@ -109,7 +109,7 @@ int ieee80211_frequency_to_channel(int freq) · 14 unmodified lines | ||
| 109 | 109 | return (freq - 4000) / 5; |
| 110 | 110 | else if (freq <= 45000) /* DMG band lower limit */ |
| 111 | 111 | return (freq - 5000) / 5; |
| 112 | − else if (freq >= 58320 && freq <= 64800) | |
| 112 | + else if (freq >= 58320 && freq <= 70200) | |
| 113 | 113 | return (freq - 56160) / 2160; |
| 114 | 114 | else |
| 115 | 115 | return 0; |
| @@ -1568,7 +1568,7 @@ bool ieee80211_chandef_to_operating_class(struct cfg80211_chan_def *chandef, · 1452 unmodified lines | ||
| 1568 | 1568 | } |
| 1569 | 1569 | |
| 1570 | 1570 | /* 56.16 GHz, channel 1..4 */ |
| 1571 | − if (freq >= 56160 + 2160 * 1 && freq <= 56160 + 2160 * 4) { | |
| 1571 | + if (freq >= 56160 + 2160 * 1 && freq <= 56160 + 2160 * 6) { | |
| 1572 | 1572 | if (chandef->width >= NL80211_CHAN_WIDTH_40) |
| 1573 | 1573 | return false; |
| 1574 | 1574 | |