From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-3.8 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 7114EC43463 for ; Mon, 21 Sep 2020 04:59:37 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 3608C2084C for ; Mon, 21 Sep 2020 04:59:37 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726228AbgIUE7g (ORCPT ); Mon, 21 Sep 2020 00:59:36 -0400 Received: from mail.adapt-ip.com ([173.164.178.19]:45754 "EHLO web.adapt-ip.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726211AbgIUE7g (ORCPT ); Mon, 21 Sep 2020 00:59:36 -0400 Received: from localhost (localhost [127.0.0.1]) by web.adapt-ip.com (Postfix) with ESMTP id 9E7424F9809; Mon, 21 Sep 2020 04:59:35 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at web.adapt-ip.com Received: from web.adapt-ip.com ([127.0.0.1]) by localhost (web.adapt-ip.com [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id 6w7BuDKrXTPr; Mon, 21 Sep 2020 04:59:32 +0000 (UTC) Received: from mail.ibsgaard.io (c-73-223-60-234.hsd1.ca.comcast.net [73.223.60.234]) (Authenticated sender: thomas@adapt-ip.com) by web.adapt-ip.com (Postfix) with ESMTPSA id A6D064F9297; Mon, 21 Sep 2020 04:59:32 +0000 (UTC) MIME-Version: 1.0 Date: Sun, 20 Sep 2020 21:59:31 -0700 From: Thomas Pedersen To: Johannes Berg Cc: linux-wireless Subject: Re: [PATCH v2 06/22] {cfg,mac}80211: get correct default channel width for S1G In-Reply-To: References: <20200831205600.21058-1-thomas@adapt-ip.com> <20200831205600.21058-7-thomas@adapt-ip.com> User-Agent: Roundcube Webmail/1.4.7 Message-ID: <18730e757068a05f6531ea204791eae8@adapt-ip.com> X-Sender: thomas@adapt-ip.com Content-Type: text/plain; charset=US-ASCII; format=flowed Content-Transfer-Encoding: 7bit Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org On 2020-09-18 03:38, Johannes Berg wrote: > On Mon, 2020-08-31 at 13:55 -0700, Thomas Pedersen wrote: >> >> +++ b/net/wireless/chan.c >> @@ -33,6 +33,16 @@ void cfg80211_chandef_create(struct >> cfg80211_chan_def *chandef, >> chandef->edmg.bw_config = 0; >> chandef->edmg.channels = 0; >> >> + /* S1G allows a single width per channel, and since chan_type seems >> to >> + * be for backwards compatibility only, ignore it and return the per >> + * frequency width. >> + */ >> + if (chan->band == NL80211_BAND_S1GHZ) { >> + chandef->width = ieee80211_s1g_channel_width(chan); >> + chandef->center_freq1 = chan->center_freq; >> + return; >> + } > > Hmm. I'm not sure I want to let you get away with this? > > It might be ... convenient, but it's also confusing to see something > like > > cfg80211_chandef_create(&out, some_channel, NL80211_CHAN_HT40PLUS); > > actually create an S1G channel width? Yes I agree that looks like it should be an error. > Yes, this is mostly for backward compatibility, but it's also used in > few (21 in the stack) places. Many of those aren't relevant, e.g. in > net/mac80211/ibss.c it would obviously be clearer to handle the new > NL80211_CHAN_WIDTH_* values with e.g. a cfg80211_get_s1g_chandef() > function or so that does this derivation, instead of running into the > > default: > /* fall back to 20 MHz for unsupported modes */ > cfg80211_chandef_create(&chandef, cbss->channel, > NL80211_CHAN_NO_HT); Yes, but then what would we pass to cfg80211_chandef_create()? We should probably avoid adding an additional NL80211_CHAN_S1G if enum nl80211_channel_type is legacy. It seems like NL80211_CHAN_NO_HT is often used as "give me the default channel width". See cfg80211_get_chandef_type() when it throws up its hands and returns NL80211_CHAN_NO_HT when encountering an unknown chandef->width. Also IBSS passes NL80211_CHAN_NO_HT when the BSS is actually 5 or 10MHz. Maybe (instead of adding a new nl80211_channel_type) cfg80211_chandef_create() throws a warning if anything but NL80211_CHAN_NO_HT is passed with an S1G frequency? > IOW, it seems to me that this function should actually instead throw a > warning (and then perhaps configure something sane?), but not be the > default code path. Yes, but I'd also like to avoid making the caller worry about the value of a parameter which only exists for HT reasons (?). -- thomas