From: Ben Greear <greearb@candelatech.com>
To: Johannes Berg <johannes@sipsolutions.net>
Cc: linux-wireless@vger.kernel.org
Subject: Re: [PATCH v4 2/2] mac80211: Support ht-cap over-rides.
Date: Mon, 07 Nov 2011 08:19:41 -0800 [thread overview]
Message-ID: <4EB8051D.5010704@candelatech.com> (raw)
In-Reply-To: <1320657208.3993.29.camel@jlt3.sipsolutions.net>
On 11/07/2011 01:13 AM, Johannes Berg wrote:
> On Fri, 2011-11-04 at 13:10 -0700, greearb@candelatech.com wrote:
>
>> +/*
>> + * Stations supporting 802.11n are required to support
>> + * at least the first 8 MCS rates. See section 7.3.2.56.4
>> + * and 20.1.1 of the 802.11n spec.
>> + */
>> +#define IEEE80211_HT_MCS_REQ_RATES_STA 8
>
> I'd prefer if this was a validation on the input from userspace directly
> in cfg80211, that way other drivers that want to implement this don't
> have to bother.
>
> That probably goes well with the validation of the supported mask that I
> asked for.
It is valid to request that the station use a lesser rate, it just
needs to advertise that it supports the first 8 rates. So, for the
rate-control logic, we use exactly what is passed in from user-space,
but when generating the HT-caps objects, we set a minimum of 8 MCS
rates.
So, if you want validation, then I'm going to have to add a second
mcs argument and mask to distinguish between what we should advertise
v/s what we should use to over-ride the local rate-control mechanism.
I will do this if you ask, but in my opinion, the current functionality
is good enough.
>> + /* mac80211 allows over-riding some of the ht-capabilities */
>> + local->hw.wiphy->ht_capa_mod_mask =
>> + kzalloc(sizeof(*local->hw.wiphy->ht_capa_mod_mask),
>> + GFP_KERNEL);
>> + if (local->hw.wiphy->ht_capa_mod_mask) {
>> + struct ieee80211_ht_cap *cm = local->hw.wiphy->ht_capa_mod_mask;
>> + u8 *r = (u8 *)(&cm->mcs.rx_mask);
>> + memset(r, 0xff, IEEE80211_HT_MCS_MASK_LEN);
>> + cm->cap_info |= IEEE80211_HT_CAP_MAX_AMSDU;
>> + cm->ampdu_params_info |= IEEE80211_HT_AMPDU_PARM_FACTOR;
>> + cm->ampdu_params_info |= IEEE80211_HT_AMPDU_PARM_DENSITY;
>> + }
>
> Why is this not just a static const that you fill manually? There's
> nothing that's not constant here. So e.g.
>
> static const struct ieee80211_ht_cap mac80211_ht_capa_mod_mask = {
> .ampdu_params_info = IEEE80211_HT_AMPDU_PARM_FACTOR |
> IEEE80211_HT_AMPDU_PARM_DENSITY,
> .mcs = {
> .rx_mask = { 0xff, 0xff, 0xff, 0xff, 0xff,
> 0xff, 0xff, 0xff, 0xff, 0xff, },
> },
> /* etc */
> };
Well, you suggested a pointer in the wiphy struct that was null
for non mac80211 interfaces. I'm not sure how to distinguish between
mac80211 and other wiphys when reporting the capabilities if I use
this global static. I also like that the non-static logic lets
us tweak this for individual drivers if that becomes an issue.
>> @@ -988,6 +1001,8 @@ int ieee80211_register_hw(struct ieee80211_hw *hw)
>> fail_wiphy_register:
>> if (local->wiphy_ciphers_allocated)
>> kfree(local->hw.wiphy->cipher_suites);
>> + kfree(local->hw.wiphy->ht_capa_mod_mask);
>> + local->hw.wiphy->ht_capa_mod_mask = NULL;
>
> No need for this then obviously.
>
>
> Looks pretty good overall. This is _much_ more readable than the
> previous series. :-)
Thanks...making progress :)
Ben
>
> johannes
--
Ben Greear <greearb@candelatech.com>
Candela Technologies Inc http://www.candelatech.com
next prev parent reply other threads:[~2011-11-07 16:19 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-11-04 20:10 [PATCH v4 1/2] wireless: Support ht-capabilities over-rides greearb
2011-11-04 20:10 ` [PATCH v4 2/2] mac80211: Support ht-cap over-rides greearb
2011-11-07 9:13 ` Johannes Berg
2011-11-07 16:19 ` Ben Greear [this message]
2011-11-07 17:06 ` Johannes Berg
2011-11-04 21:03 ` [PATCH v4 1/2] wireless: Support ht-capabilities over-rides Johannes Berg
2011-11-07 9:06 ` Johannes Berg
2011-11-07 16:27 ` Ben Greear
2011-11-07 17:02 ` Johannes Berg
2011-11-07 17:40 ` Ben Greear
2011-11-07 17:42 ` Johannes Berg
2011-11-07 17:45 ` Ben Greear
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4EB8051D.5010704@candelatech.com \
--to=greearb@candelatech.com \
--cc=johannes@sipsolutions.net \
--cc=linux-wireless@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.