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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).