Message ID | 20190718015712.197499-1-briannorris@chromium.org (mailing list archive) |
---|---|
State | Accepted |
Delegated to: | Johannes Berg |
Headers | show |
Series | mac80211: don't warn about CW params when not using them | expand |
On Wed, Jul 17, 2019 at 06:57:12PM -0700, Brian Norris wrote: > ieee80211_set_wmm_default() normally sets up the initial CW min/max for > each queue, except that it skips doing this if the driver doesn't > support ->conf_tx. We still end up calling drv_conf_tx() in some cases > (e.g., ieee80211_reconfig()), which also still won't do anything > useful...except it complains here about the invalid CW parameters. > > Let's just skip the WARN if we weren't going to do anything useful with > the parameters. > > Signed-off-by: Brian Norris <briannorris@chromium.org> > --- > Noticed because rtw88 does not currently implement .conf_tx() > > I think there are several ways to slice this one. I picked one fix, > which may not be the best one. Fix looks fine for me. However I think rtw88 should implement drv_conf_tx() because parameters can be different on different network setups and maybe more important WMM/AC parameters become quite recently part of ETSI regulatory. Stanislaw
On Thu, Jul 18, 2019 at 12:45 AM Stanislaw Gruszka <sgruszka@redhat.com> wrote: > Fix looks fine for me. However I think rtw88 should implement > drv_conf_tx() because parameters can be different on different > network setups and maybe more important WMM/AC parameters become > quite recently part of ETSI regulatory. Ack. I just figured we should stay consistent with the WARNINGs (and we both noticed this one on earlier patch reviews). I don't know about you, but for me, the whole wireless stack is so full of WARNINGs that my crash reporter system separately classifies net/wireless and drivers/net/wireless/ from the rest of the kernel when categorizing automated problem reports. (And...most developers then ignore them.) But I digress ;) Brian
diff --git a/net/mac80211/driver-ops.c b/net/mac80211/driver-ops.c index acd4afb4944b..c9a8a2433e8a 100644 --- a/net/mac80211/driver-ops.c +++ b/net/mac80211/driver-ops.c @@ -187,11 +187,16 @@ int drv_conf_tx(struct ieee80211_local *local, if (!check_sdata_in_driver(sdata)) return -EIO; - if (WARN_ONCE(params->cw_min == 0 || - params->cw_min > params->cw_max, - "%s: invalid CW_min/CW_max: %d/%d\n", - sdata->name, params->cw_min, params->cw_max)) + if (params->cw_min == 0 || params->cw_min > params->cw_max) { + /* + * If we can't configure hardware anyway, don't warn. We may + * never have initialized the CW parameters. + */ + WARN_ONCE(local->ops->conf_tx, + "%s: invalid CW_min/CW_max: %d/%d\n", + sdata->name, params->cw_min, params->cw_max); return -EINVAL; + } trace_drv_conf_tx(local, sdata, ac, params); if (local->ops->conf_tx)
ieee80211_set_wmm_default() normally sets up the initial CW min/max for each queue, except that it skips doing this if the driver doesn't support ->conf_tx. We still end up calling drv_conf_tx() in some cases (e.g., ieee80211_reconfig()), which also still won't do anything useful...except it complains here about the invalid CW parameters. Let's just skip the WARN if we weren't going to do anything useful with the parameters. Signed-off-by: Brian Norris <briannorris@chromium.org> --- Noticed because rtw88 does not currently implement .conf_tx() I think there are several ways to slice this one. I picked one fix, which may not be the best one. net/mac80211/driver-ops.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-)