[PATCH 1/9] wifi: mac80211: allow enabling chanctx until hw registration
Sean Wang
sean.wang at kernel.org
Wed Aug 17 01:28:37 PDT 2022
Hi Johannes,
On Tue, Aug 16, 2022 at 3:22 AM Johannes Berg <johannes at sipsolutions.net> wrote:
>
> On Tue, 2022-08-16 at 08:03 +0800, sean.wang at mediatek.com wrote:
> > From: Sean Wang <sean.wang at mediatek.com>
> >
> > MT7921 device can be supported with the channel context depending on
> > the newer firmware so that we need a way to enable the chanctx related
> > methods until hw is being registered.
> >
> > Signed-off-by: Sean Wang <sean.wang at mediatek.com>
> > ---
> > net/mac80211/main.c | 8 ++++++++
> > 1 file changed, 8 insertions(+)
> >
> > diff --git a/net/mac80211/main.c b/net/mac80211/main.c
> > index 5b1c47ed0cc0..98d05ed1a081 100644
> > --- a/net/mac80211/main.c
> > +++ b/net/mac80211/main.c
> > @@ -1011,6 +1011,14 @@ int ieee80211_register_hw(struct ieee80211_hw *hw)
> > return -EINVAL;
> > #endif
> >
> > + /* check all or no channel context operations exist */
> > + i = !!local->ops->add_chanctx + !!local->ops->remove_chanctx +
> > + !!local->ops->change_chanctx + !!local->ops->assign_vif_chanctx +
> > + !!local->ops->unassign_vif_chanctx;
> > + if (WARN_ON(i != 0 && i != 5))
> > + return -EINVAL;
> > + local->use_chanctx = i == 5;
> > +
>
> Not sure I understand this - this just *adds* code, based on the
> description I would've expected you to *move* code?
It can be done and looks better by *move* code instead of *adds* code.
I will change it in the next version. Thanks for your input.
>
> In any case, I'm not sure I see how this makes sense - ops is supposed
> to be const, and you're supposed to pass it to alloc_hw already, so how
> would it change?!
>
> Also, conceptually, I'm not sure why it's needed to alloc_hw before
> loading firmware, we also have a lot of things depend on the firmware
> capabilities in iwlwifi/mvm, and so we alloc/register HW after loading
> firmware.
>
Based on mt76 driver logic, alloc_hw would be needed before loading firmware
because alloc_hw creates an instance of "struct mt76_dev*" the
firmware loading relies on,
and so the firmware capabilities cannot be decided before we alloc_hw
in mt76 driver.
sean
> johannes
>
More information about the Linux-mediatek
mailing list