Search Linux Wireless

Re: Intel 4965 HT rates

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sun, Dec 20, 2009 at 5:10 AM, Valentin Manea <linux-wireless@xxxxxx> wrote:
> Hi,
>
>  I'm running compat-wireless-2.6.33-rc1 and iw list shows some confusing HT
> capabilities:
>        Band 1:
>                HT capabilities: 0x082c
>                        * 20 MHz operation
>                        * SM PS disabled
>                        * 20 MHz short GI
>                        * max A-MSDU len 7935
>
> but for 802.11a channels:
>        Band 2:
>                HT capabilities: 0x086e
>                        * 20/40 MHz operation
>                        * SM PS disabled
>                        * 20 MHz short GI
>                        * 40 MHz short GI
>                        * max A-MSDU len 7935
>
> While I can't tell when this happened, I remember older 2.6.29 releases
> supported HT40 for both bands.

How do you know? What makes you believe that was the case?

> The wireless card is an Intel 4965 on a Thinkpad T61.

The ht_cap that gets parsed and sent back through nl80211 is
initialized in iwl-agn on iwl-core.c on iwlcore_init_ht_hw_capab() as
follows

static void iwlcore_init_ht_hw_capab(const struct iwl_priv *priv,
                              struct ieee80211_sta_ht_cap *ht_info,
                              enum ieee80211_band band)
{
        ....
        if (priv->hw_params.ht40_channel & BIT(band)) {
                ht_info->cap |= IEEE80211_HT_CAP_SUP_WIDTH_20_40;
                ht_info->cap |= IEEE80211_HT_CAP_SGI_40;
                ht_info->mcs.rx_mask[4] = 0x01;
                max_bit_rate = MAX_BIT_RATE_40_MHZ;
        }
        ....
}

And the priv->hw_params.ht40_channel gets initialized for 4965
hardware on iwl4965_hw_set_hw_params():

static int iwl4965_hw_set_hw_params(struct iwl_priv *priv)
{
        ...
        priv->hw_params.ht40_channel = BIT(IEEE80211_BAND_5GHZ);
        ....
}

iwl-5000 and iwl-6000 sets this to both bands:

int iwl5000_hw_set_hw_params(struct iwl_priv *priv)
{
        ....
        priv->hw_params.ht40_channel =  BIT(IEEE80211_BAND_2GHZ) |
                                        BIT(IEEE80211_BAND_5GHZ);
        ....
}

static int iwl6000_hw_set_hw_params(struct iwl_priv *priv)
{
        ....
        priv->hw_params.ht40_channel =  BIT(IEEE80211_BAND_2GHZ) |
                                        BIT(IEEE80211_BAND_5GHZ);
        ....
}

So it appears to be done explicitly in software, not sure if hardware
does support HT40 on 2.4 GHz band on the 4965, Intel folks would
though.

  Luis
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]
  Powered by Linux