|
@@ -735,16 +735,22 @@ void b43_rx(struct b43_wldev *dev, struct sk_buff *skb, const void *_rxhdr)
|
|
|
}
|
|
|
|
|
|
/* Link quality statistics */
|
|
|
- if ((chanstat & B43_RX_CHAN_PHYTYPE) == B43_PHYTYPE_N) {
|
|
|
-// s8 rssi = max(rxhdr->power0, rxhdr->power1);
|
|
|
- //TODO: Find out what the rssi value is (dBm or percentage?)
|
|
|
- // and also find out what the maximum possible value is.
|
|
|
- // Fill status.ssi and status.signal fields.
|
|
|
- } else {
|
|
|
+ switch (chanstat & B43_RX_CHAN_PHYTYPE) {
|
|
|
+ case B43_PHYTYPE_N:
|
|
|
+ if (rxhdr->power0 == 16 || rxhdr->power0 == 32)
|
|
|
+ status.signal = max(rxhdr->power1, rxhdr->power2);
|
|
|
+ else
|
|
|
+ status.signal = max(rxhdr->power0, rxhdr->power1);
|
|
|
+ break;
|
|
|
+ case B43_PHYTYPE_A:
|
|
|
+ case B43_PHYTYPE_B:
|
|
|
+ case B43_PHYTYPE_G:
|
|
|
+ case B43_PHYTYPE_LP:
|
|
|
status.signal = b43_rssi_postprocess(dev, rxhdr->jssi,
|
|
|
(phystat0 & B43_RX_PHYST0_OFDM),
|
|
|
(phystat0 & B43_RX_PHYST0_GAINCTL),
|
|
|
(phystat3 & B43_RX_PHYST3_TRSTATE));
|
|
|
+ break;
|
|
|
}
|
|
|
|
|
|
if (phystat0 & B43_RX_PHYST0_OFDM)
|