[rt2x00-users] HT40 mixed mode RTS/CTS protection in rt2800
Helmut Schaa
helmut.schaa at googlemail.com
Thu Sep 16 07:37:08 UTC 2010
Am Donnerstag 16 September 2010 schrieb Ivo Van Doorn:
> Hi,
>
> > I just looked through the RTS/CTS code in rt2800 and stumbled accross the
> > following:
> >
> > 1849 rt2800_register_read(rt2x00dev, MM40_PROT_CFG, ®);
> > 1850 rt2x00_set_field32(®, MM40_PROT_CFG_PROTECT_RATE, 0x4084);
> > 1851 rt2x00_set_field32(®, MM40_PROT_CFG_PROTECT_CTRL,
> > 1852 !rt2x00_is_usb(rt2x00dev));
> > 1853 rt2x00_set_field32(®, MM40_PROT_CFG_PROTECT_NAV, 1);
> > 1854 rt2x00_set_field32(®, MM40_PROT_CFG_TX_OP_ALLOW_CCK, 1);
> > 1855 rt2x00_set_field32(®, MM40_PROT_CFG_TX_OP_ALLOW_OFDM, 1);
> > 1856 rt2x00_set_field32(®, MM40_PROT_CFG_TX_OP_ALLOW_MM20, 1);
> > 1857 rt2x00_set_field32(®, MM40_PROT_CFG_TX_OP_ALLOW_MM40, 1);
> > 1858 rt2x00_set_field32(®, MM40_PROT_CFG_TX_OP_ALLOW_GF20, 1);
> > 1859 rt2x00_set_field32(®, MM40_PROT_CFG_TX_OP_ALLOW_GF40, 1);
> > 1860 rt2x00_set_field32(®, MM40_PROT_CFG_RTS_TH_EN, 0);
> > 1861 rt2800_register_write(rt2x00dev, MM40_PROT_CFG, reg);
> >
> > For non-usb devices RTS/CTS-protection is always enabled for HT mixed mode
> > transmission with 40Mhz channel width.
> >
> > I rechecked the legacy driver and the PCI versions really initialize the
> > register in the same way. However, I didn't find any clues why this would
> > be needed (and why only for PCI) but the legacy driver will reset the
> > protection in AsicUpdateProtect when all STA in this BSS are HT40 capable
> > (so it does not seem to be a hw workaround).
> >
> > Any ideas why it is turned on by default in the legacy drivers? Otherwise
> > we could just disable it for both PCI and USB.
> >
> > Btw. we are never setting or resetting the HT protection modes in rt2800.
> > That means that HT mixed mode 40Mhz transmission will always be protected
> > by RTS/CTS at the moment.
>
> Well I wanted to implement that, but the legacy driver doesn't do anything
> differently for different protection modes. So I was unsure about the exact
> approach to take..
Hmm, have a look at AsicUpdateProtect in common/cmm_asic.c to see how the
legacy drivers handles HT protection. Should be similar to the patch I've sent
for review.
Thanks,
Helmut
More information about the users
mailing list