Intel 4965 HT rates
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.
The wireless card is an Intel 4965 on a Thinkpad T61.
Regards,
Valentin
Quoted 20 lines · Valentin Manea
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 7935but 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
Quoted 2 lines
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?
Quoted 1 line
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
T24gU3VuLCBEZWMgMjAsIDIwMDkgYXQgMTo0MiBQTSwgTHVpcyBSLiBSb2RyaWd1ZXogPG1jZ3Jv ZkBnbWFpbC5jb20+IHdyb3RlOgo+IE9uIFN1biwgRGVjIDIwLCAyMDA5IGF0IDU6MTAgQU0sIFZh bGVudGluIE1hbmVhIDxsaW51eC13aXJlbGVzc0BtcnMucm8+IHdyb3RlOgo+PiBIaSwKPj4KPj4g wqBJJ20gcnVubmluZyBjb21wYXQtd2lyZWxlc3MtMi42LjMzLXJjMSBhbmQgaXcgbGlzdCBzaG93 cyBzb21lIGNvbmZ1c2luZyBIVAo+PiBjYXBhYmlsaXRpZXM6Cj4+IMKgIMKgIMKgIMKgQmFuZCAx Ogo+PiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoEhUIGNhcGFiaWxpdGllczogMHgwODJjCj4+IMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgKiAyMCBNSHogb3BlcmF0aW9uCj4+IMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgKiBTTSBQUyBkaXNhYmxlZAo+PiDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCogMjAgTUh6IHNob3J0IEdJCj4+IMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgKiBtYXggQS1NU0RVIGxlbiA3OTM1Cj4+Cj4+ IGJ1dCBmb3IgODAyLjExYSBjaGFubmVsczoKPj4gwqAgwqAgwqAgwqBCYW5kIDI6Cj4+IMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgSFQgY2FwYWJpbGl0aWVzOiAweDA4NmUKPj4gwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAqIDIwLzQwIE1IeiBvcGVyYXRpb24KPj4gwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAqIFNNIFBTIGRpc2FibGVkCj4+IMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgKiAyMCBNSHogc2hvcnQgR0kKPj4gwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAqIDQwIE1IeiBzaG9ydCBHSQo+PiDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCogbWF4IEEtTVNEVSBsZW4gNzkzNQo+Pgo+PiBXaGlsZSBJ IGNhbid0IHRlbGwgd2hlbiB0aGlzIGhhcHBlbmVkLCBJIHJlbWVtYmVyIG9sZGVyIDIuNi4yOSBy ZWxlYXNlcwo+PiBzdXBwb3J0ZWQgSFQ0MCBmb3IgYm90aCBiYW5kcy4KPgo+IEhvdyBkbyB5b3Ug a25vdz8gV2hhdCBtYWtlcyB5b3UgYmVsaWV2ZSB0aGF0IHdhcyB0aGUgY2FzZT8KPgo+PiBUaGUg d2lyZWxlc3MgY2FyZCBpcyBhbiBJbnRlbCA0OTY1IG9uIGEgVGhpbmtwYWQgVDYxLgo+Cj4gVGhl IGh0X2NhcCB0aGF0IGdldHMgcGFyc2VkIGFuZCBzZW50IGJhY2sgdGhyb3VnaCBubDgwMjExIGlz Cj4gaW5pdGlhbGl6ZWQgaW4gaXdsLWFnbiBvbiBpd2wtY29yZS5jIG9uIGl3bGNvcmVfaW5pdF9o dF9od19jYXBhYigpIGFzCj4gZm9sbG93cwo+Cj4gc3RhdGljIHZvaWQgaXdsY29yZV9pbml0X2h0 X2h3X2NhcGFiKGNvbnN0IHN0cnVjdCBpd2xfcHJpdiAqcHJpdiwKPiDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHN0cnVjdCBpZWVlODAyMTFfc3RhX2h0X2NhcCAq aHRfaW5mbywKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGVu dW0gaWVlZTgwMjExX2JhbmQgYmFuZCkKPiB7Cj4gwqAgwqAgwqAgwqAuLi4uCj4gwqAgwqAgwqAg wqBpZiAocHJpdi0+aHdfcGFyYW1zLmh0NDBfY2hhbm5lbCAmIEJJVChiYW5kKSkgewo+IMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgaHRfaW5mby0+Y2FwIHw9IElFRUU4MDIxMV9IVF9DQVBfU1VQX1dJ RFRIXzIwXzQwOwo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgaHRfaW5mby0+Y2FwIHw9IElFRUU4 MDIxMV9IVF9DQVBfU0dJXzQwOwo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgaHRfaW5mby0+bWNz LnJ4X21hc2tbNF0gPSAweDAxOwo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgbWF4X2JpdF9yYXRl ID0gTUFYX0JJVF9SQVRFXzQwX01IWjsKPiDCoCDCoCDCoCDCoH0KPiDCoCDCoCDCoCDCoC4uLi4K PiB9Cj4KPiBBbmQgdGhlIHByaXYtPmh3X3BhcmFtcy5odDQwX2NoYW5uZWwgZ2V0cyBpbml0aWFs aXplZCBmb3IgNDk2NQo+IGhhcmR3YXJlIG9uIGl3bDQ5NjVfaHdfc2V0X2h3X3BhcmFtcygpOgo+ Cj4gc3RhdGljIGludCBpd2w0OTY1X2h3X3NldF9od19wYXJhbXMoc3RydWN0IGl3bF9wcml2ICpw cml2KQo+IHsKPiDCoCDCoCDCoCDCoC4uLgo+IMKgIMKgIMKgIMKgcHJpdi0+aHdfcGFyYW1zLmh0 NDBfY2hhbm5lbCA9IEJJVChJRUVFODAyMTFfQkFORF81R0haKTsKPiDCoCDCoCDCoCDCoC4uLi4K PiB9Cj4KPiBpd2wtNTAwMCBhbmQgaXdsLTYwMDAgc2V0cyB0aGlzIHRvIGJvdGggYmFuZHM6Cj4K PiBpbnQgaXdsNTAwMF9od19zZXRfaHdfcGFyYW1zKHN0cnVjdCBpd2xfcHJpdiAqcHJpdikKPiB7 Cj4gwqAgwqAgwqAgwqAuLi4uCj4gwqAgwqAgwqAgwqBwcml2LT5od19wYXJhbXMuaHQ0MF9jaGFu bmVsID0gwqBCSVQoSUVFRTgwMjExX0JBTkRfMkdIWikgfAo+IMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgQklUKElFRUU4MDIxMV9CQU5E XzVHSFopOwo+IMKgIMKgIMKgIMKgLi4uLgo+IH0KPgo+IHN0YXRpYyBpbnQgaXdsNjAwMF9od19z ZXRfaHdfcGFyYW1zKHN0cnVjdCBpd2xfcHJpdiAqcHJpdikKPiB7Cj4gwqAgwqAgwqAgwqAuLi4u Cj4gwqAgwqAgwqAgwqBwcml2LT5od19wYXJhbXMuaHQ0MF9jaGFubmVsID0gwqBCSVQoSUVFRTgw MjExX0JBTkRfMkdIWikgfAo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgQklUKElFRUU4MDIxMV9CQU5EXzVHSFopOwo+IMKgIMKgIMKg IMKgLi4uLgo+IH0KPgo+IFNvIGl0IGFwcGVhcnMgdG8gYmUgZG9uZSBleHBsaWNpdGx5IGluIHNv ZnR3YXJlLCBub3Qgc3VyZSBpZiBoYXJkd2FyZQo+IGRvZXMgc3VwcG9ydCBIVDQwIG9uIDIuNCBH SHogYmFuZCBvbiB0aGUgNDk2NSwgSW50ZWwgZm9sa3Mgd291bGQKPiB0aG91Z2guCgpKdXN0IGNo ZWNrZWQgMi42LjI5IGNvZGUgYW5kIGl0cyB0aGUgc2FtZSB0aGVyZS4KCiAgTHVpcwo=
Quoted 6 lines · Luis R. Rodriguez
Quoted 3 lines · Luis R. Rodriguez
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.
Just checked 2.6.29 code and its the same there.
Except its called priv->hw_params.fat_channel there.
Luis
Quoted 74 lines · Luis R. Rodriguez
Quoted 20 lines · Valentin Manea
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 7935but 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 7935Quoted 2 lines
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?
Quoted 1 line
The wireless card is an Intel 4965 on a Thinkpad T61.
The
ht_capthat gets parsed and sent back through nl80211 is initialized in iwl-agn oniwl-core.coniwlcore_init_ht_hw_capab()as followsstatic 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_channelgets initialized for 4965 hardware oniwl4965_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);
....
}
Quoted 4 lines
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.
AFAIK the Windows driver supports 2GHz HT40 for all cards, but disables it by default, even for IWL5/6xxx.
Quoted 6 lines
Luis
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Signature · 1 line
Vista: [V]iruses, [I]ntruders, [S]pyware, [T]rojans and [A]dware. :-)
Hmmm,
Sorry, you are right, Intel describes this as a feature for the 4965. I was
probably running a very old driver(it was before they added support for the 5000 series), because I remember specifically the router reporting a 117Mbs bitrate.
I'm still trying to track down that driver as it seems quite silly to have this artificial limitation.
Thanks,
Valentin
Quoted 1 line · Luis R. Rodriguez
On Sun, Dec 20, 2009 at 5:10 AM, Valentin Manea <[email protected]>
Quoted 79 lines · wrote:
Quoted 20 lines
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 7935but 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 7935Quoted 2 lines
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?
Quoted 1 line
The wireless card is an Intel 4965 on a Thinkpad T61.
The
ht_capthat gets parsed and sent back through nl80211 is initialized in iwl-agn oniwl-core.coniwlcore_init_ht_hw_capab()as followsstatic 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_channelgets initialized for 4965 hardware oniwl4965_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