void rt2x00link_update_stats(struct rt2x00_dev *rt2x00dev, struct sk_buff *skb, struct rxdone_entry_desc *rxdesc) { struct link *link = &rt2x00dev->link; struct link_qual *qual = &rt2x00dev->link.qual; struct link_ant *ant = &rt2x00dev->link.ant; struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data; /* * Frame was received successfully since non-succesfull * frames would have been dropped by the hardware. */ qual->rx_success++; /* * We are only interested in quality statistics from * beacons which came from the BSS which we are * associated with. */ if (!ieee80211_is_beacon(hdr->frame_control) || !(rxdesc->dev_flags & RXDONE_MY_BSS)) return; /* * Update global RSSI */ link->avg_rssi = MOVING_AVERAGE(link->avg_rssi, rxdesc->rssi); /* * Update antenna RSSI */ ant->rssi_ant = MOVING_AVERAGE(ant->rssi_ant, rxdesc->rssi); }
static void rt2x00lib_update_link_stats(struct link *link, int rssi) { int avg_rssi = rssi; /* * Update global RSSI */ if (link->qual.avg_rssi) avg_rssi = MOVING_AVERAGE(link->qual.avg_rssi, rssi, 8); link->qual.avg_rssi = avg_rssi; /* * Update antenna RSSI */ if (link->ant.rssi_ant) rssi = MOVING_AVERAGE(link->ant.rssi_ant, rssi, 8); link->ant.rssi_ant = rssi; }