[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, &reg);
> > 1850         rt2x00_set_field32(&reg, MM40_PROT_CFG_PROTECT_RATE, 0x4084);
> > 1851         rt2x00_set_field32(&reg, MM40_PROT_CFG_PROTECT_CTRL,
> > 1852                            !rt2x00_is_usb(rt2x00dev));
> > 1853         rt2x00_set_field32(&reg, MM40_PROT_CFG_PROTECT_NAV, 1);
> > 1854         rt2x00_set_field32(&reg, MM40_PROT_CFG_TX_OP_ALLOW_CCK, 1);
> > 1855         rt2x00_set_field32(&reg, MM40_PROT_CFG_TX_OP_ALLOW_OFDM, 1);
> > 1856         rt2x00_set_field32(&reg, MM40_PROT_CFG_TX_OP_ALLOW_MM20, 1);
> > 1857         rt2x00_set_field32(&reg, MM40_PROT_CFG_TX_OP_ALLOW_MM40, 1);
> > 1858         rt2x00_set_field32(&reg, MM40_PROT_CFG_TX_OP_ALLOW_GF20, 1);
> > 1859         rt2x00_set_field32(&reg, MM40_PROT_CFG_TX_OP_ALLOW_GF40, 1);
> > 1860         rt2x00_set_field32(&reg, 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