On Wednesday 18 February 2009 12:51:13 Francesco Gringoli wrote:
> >> - is that correct to have status.rate_idx filled by functions
> >> b43_plcp_get_bitrate_idx_ofdm and b43_plcp_get_bitrate_idx_cck that
> >> compute those values reading the plcp?
> >
> > Yes I think so. This seems to be the best way to do it.
> After some thoughts I'm wondering how these fields could be wrong  
> since the PLCP is protected on its own by another checksum external to  
> MPDU.

Yes you're right.

> Probably the firmware keep also frames whose PLCP is wrong,   
> while b43_rx only check for FCS problems within the MPDU. Will  
> investigate.

Well, there is a bug that misaligned frames are sometimes passed up to the 
driver.
It happens with any firmware and any driver (including open fw).
So it might be a silicon bug in the DMA. I'm not sure yet.

So you'll hit the rate_idx failure from time to time. That's expected and 
nonfatal.
It just happens for one packet of say 1000. I don't really know.

> > If the PLCP header is corrupt you're completely fucked anyway.
> > It is a basic and safe assumption that the PLCP header is correct.
> > But it shouldn't _crash_ if it's not correct. But I think it doesn't.
> Well, I think that capturing noisy frames is interesting for all those  
> guys willing to use data for research purposes without buying a  
> network analyzer that basically do the same...

Note that the PLCP is casted into hardware. You cannot change it or else
you will corrupt basic assumptions in the radio silicon.
So you better not touch it or buy a radio analyzer.
That's simply a limitation of the consumer hardware.

> > These warnings were removed some time ago. Please update your kernel.
> Uhm... I updated it before writing this mail to check about this  
> possibility but I believed these warns were still there
> 
> [taken from __ieee80211_rx() pulled from git yesterday night]
>          if (status->flag & RX_FLAG_HT) {
>                  /* rate_idx is MCS index */
>                  if (WARN_ON(status->rate_idx < 0 ||
>                              status->rate_idx >= 76))
>                          return;
>                  /* HT rates are not in the table - use the highest  
> legacy rate
>                   * for now since other parts of mac80211 may not yet  
> be fully
>                   * MCS aware. */
>                  rate = &sband->bitrates[sband->n_bitrates - 1];
>          } else {
>                  if (WARN_ON(status->rate_idx < 0 ||
>                              status->rate_idx >= sband->n_bitrates))
>                          return;
>                  rate = &sband->bitrates[status->rate_idx];
>          }

Ok, well. I don't know about mac80211. But the warnings in b43 were removed
(also some warnings were removed in mac80211).

I think these warnings should also be removed. You can do patches and send
them to Johannes.

-- 
Greetings, Michael.
_______________________________________________
Bcm43xx-dev mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/bcm43xx-dev

Reply via email to