From b0ffb6cc3cf87583085d57ceeec1dd2d52aa3956 Mon Sep 17 00:00:00 2001 From: Ivo van Doorn Date: Sun, 6 Jan 2008 23:41:28 +0100 Subject: [PATCH] --- yaml --- r: 79385 b: refs/heads/master c: 7e56d38d5d0bda89228821902af297a46b5fdb80 h: refs/heads/master i: 79383: 30bacaa5659b3e7bdaac45a1b9125717fa58e1aa v: v3 --- [refs] | 2 +- trunk/drivers/net/wireless/rt2x00/rt2400pci.c | 1 + trunk/drivers/net/wireless/rt2x00/rt2500pci.c | 1 + trunk/drivers/net/wireless/rt2x00/rt2500usb.c | 3 +-- trunk/drivers/net/wireless/rt2x00/rt2x00dev.c | 18 +++++------------- trunk/drivers/net/wireless/rt2x00/rt2x00ring.h | 1 + trunk/drivers/net/wireless/rt2x00/rt61pci.c | 3 +-- trunk/drivers/net/wireless/rt2x00/rt73usb.c | 3 +-- 8 files changed, 12 insertions(+), 20 deletions(-) diff --git a/[refs] b/[refs] index cba2b4e6acf7..85607708eaba 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: dd3193e1c25ffbc66b684edb52273ae10695909d +refs/heads/master: 7e56d38d5d0bda89228821902af297a46b5fdb80 diff --git a/trunk/drivers/net/wireless/rt2x00/rt2400pci.c b/trunk/drivers/net/wireless/rt2x00/rt2400pci.c index ffc7e208f9b2..95db2ccbc9a6 100644 --- a/trunk/drivers/net/wireless/rt2x00/rt2400pci.c +++ b/trunk/drivers/net/wireless/rt2x00/rt2400pci.c @@ -1117,6 +1117,7 @@ static void rt2400pci_fill_rxdone(struct data_entry *entry, entry->ring->rt2x00dev->rssi_offset; desc->ofdm = 0; desc->size = rt2x00_get_field32(word0, RXD_W0_DATABYTE_COUNT); + desc->my_bss = !!rt2x00_get_field32(word0, RXD_W0_MY_BSS); } /* diff --git a/trunk/drivers/net/wireless/rt2x00/rt2500pci.c b/trunk/drivers/net/wireless/rt2x00/rt2500pci.c index 81a48e88f2a0..133967e81f6f 100644 --- a/trunk/drivers/net/wireless/rt2x00/rt2500pci.c +++ b/trunk/drivers/net/wireless/rt2x00/rt2500pci.c @@ -1264,6 +1264,7 @@ static void rt2500pci_fill_rxdone(struct data_entry *entry, entry->ring->rt2x00dev->rssi_offset; desc->ofdm = rt2x00_get_field32(word0, RXD_W0_OFDM); desc->size = rt2x00_get_field32(word0, RXD_W0_DATABYTE_COUNT); + desc->my_bss = !!rt2x00_get_field32(word0, RXD_W0_MY_BSS); } /* diff --git a/trunk/drivers/net/wireless/rt2x00/rt2500usb.c b/trunk/drivers/net/wireless/rt2x00/rt2500usb.c index 86eefb453606..86549d5b64b3 100644 --- a/trunk/drivers/net/wireless/rt2x00/rt2500usb.c +++ b/trunk/drivers/net/wireless/rt2x00/rt2500usb.c @@ -1138,8 +1138,7 @@ static void rt2500usb_fill_rxdone(struct data_entry *entry, entry->ring->rt2x00dev->rssi_offset; desc->ofdm = rt2x00_get_field32(word0, RXD_W0_OFDM); desc->size = rt2x00_get_field32(word0, RXD_W0_DATABYTE_COUNT); - - return; + desc->my_bss = !!rt2x00_get_field32(word0, RXD_W0_MY_BSS); } /* diff --git a/trunk/drivers/net/wireless/rt2x00/rt2x00dev.c b/trunk/drivers/net/wireless/rt2x00/rt2x00dev.c index a95cf531f083..a11421274f79 100644 --- a/trunk/drivers/net/wireless/rt2x00/rt2x00dev.c +++ b/trunk/drivers/net/wireless/rt2x00/rt2x00dev.c @@ -526,7 +526,6 @@ void rt2x00lib_rxdone(struct data_entry *entry, struct sk_buff *skb, struct rxdata_entry_desc *desc) { struct rt2x00_dev *rt2x00dev = entry->ring->rt2x00dev; - struct interface *intf = &rt2x00dev->interface; struct ieee80211_rx_status *rx_status = &rt2x00dev->rx_status; struct ieee80211_hw_mode *mode; struct ieee80211_rate *rate; @@ -559,19 +558,12 @@ void rt2x00lib_rxdone(struct data_entry *entry, struct sk_buff *skb, } /* - * Only update link status if this is a beacon frame carrying our - * bssid. + * Only update link status if this is a beacon frame carrying our bssid. */ - hdr = (struct ieee80211_hdr *) skb->data; - if (skb->len >= sizeof(struct ieee80211_hdr *)) { - fc = le16_to_cpu(hdr->frame_control); - if ((intf->type == IEEE80211_IF_TYPE_STA - || intf->type == IEEE80211_IF_TYPE_IBSS) - && is_beacon(fc) - && compare_ether_addr(hdr->addr3, intf->bssid) == 0) - rt2x00lib_update_link_stats(&rt2x00dev->link, - desc->rssi); - } + hdr = (struct ieee80211_hdr*)skb->data; + fc = le16_to_cpu(hdr->frame_control); + if (is_beacon(fc) && desc->my_bss) + rt2x00lib_update_link_stats(&rt2x00dev->link, desc->rssi); rt2x00dev->link.qual.rx_success++; diff --git a/trunk/drivers/net/wireless/rt2x00/rt2x00ring.h b/trunk/drivers/net/wireless/rt2x00/rt2x00ring.h index e9a564863127..1caa6d688c40 100644 --- a/trunk/drivers/net/wireless/rt2x00/rt2x00ring.h +++ b/trunk/drivers/net/wireless/rt2x00/rt2x00ring.h @@ -59,6 +59,7 @@ struct rxdata_entry_desc { int ofdm; int size; int flags; + int my_bss; }; /* diff --git a/trunk/drivers/net/wireless/rt2x00/rt61pci.c b/trunk/drivers/net/wireless/rt2x00/rt61pci.c index 35e7607cf164..eb8102486b5b 100644 --- a/trunk/drivers/net/wireless/rt2x00/rt61pci.c +++ b/trunk/drivers/net/wireless/rt2x00/rt61pci.c @@ -1695,8 +1695,7 @@ static void rt61pci_fill_rxdone(struct data_entry *entry, desc->rssi = rt61pci_agc_to_rssi(entry->ring->rt2x00dev, word1); desc->ofdm = rt2x00_get_field32(word0, RXD_W0_OFDM); desc->size = rt2x00_get_field32(word0, RXD_W0_DATABYTE_COUNT); - - return; + desc->my_bss = !!rt2x00_get_field32(word0, RXD_W0_MY_BSS); } /* diff --git a/trunk/drivers/net/wireless/rt2x00/rt73usb.c b/trunk/drivers/net/wireless/rt2x00/rt73usb.c index 29824701e703..beaa264f6af7 100644 --- a/trunk/drivers/net/wireless/rt2x00/rt73usb.c +++ b/trunk/drivers/net/wireless/rt2x00/rt73usb.c @@ -1396,13 +1396,12 @@ static void rt73usb_fill_rxdone(struct data_entry *entry, desc->rssi = rt73usb_agc_to_rssi(entry->ring->rt2x00dev, word1); desc->ofdm = rt2x00_get_field32(word0, RXD_W0_OFDM); desc->size = rt2x00_get_field32(word0, RXD_W0_DATABYTE_COUNT); + desc->my_bss = !!rt2x00_get_field32(word0, RXD_W0_MY_BSS); /* * Pull the skb to clear the descriptor area. */ skb_pull(entry->skb, entry->ring->desc_size); - - return; } /*