-Index: madwifi-ng-r2756-20071018/ath/if_ath.c
-===================================================================
---- madwifi-ng-r2756-20071018.orig/ath/if_ath.c 2007-10-27 19:20:14.495461544 +0200
-+++ madwifi-ng-r2756-20071018/ath/if_ath.c 2007-10-27 19:22:02.865637202 +0200
-@@ -1417,7 +1417,6 @@
+--- a/ath/if_ath.c
++++ b/ath/if_ath.c
+@@ -1695,8 +1695,6 @@
+ * get to reality. This value is used in monitor mode and by tools like
* Wireshark and Kismet.
*/
- hw_tsf = ath_hal_gettsf64(ah);
- ic->ic_channoise = ath_hal_get_channel_noise(ah, &(sc->sc_curchan));
-
+-
ATH_RXBUF_LOCK_IRQ(sc);
if (sc->sc_rxbufcur == NULL)
-@@ -8174,6 +8173,7 @@
- struct net_device *dev = (struct net_device *) arg;
- struct ath_softc *sc = dev->priv;
- struct ath_hal *ah = sc->sc_ah;
-+ struct ieee80211com *ic = &sc->sc_ic;
- /* u_int32_t nchans; */
- HAL_BOOL isIQdone = AH_FALSE;
-
-@@ -8202,6 +8202,7 @@
- ath_calinterval = ATH_LONG_CALINTERVAL;
- else
- ath_calinterval = ATH_SHORT_CALINTERVAL;
+ sc->sc_rxbufcur = STAILQ_FIRST(&sc->sc_rxbuf);
+@@ -8966,6 +8964,7 @@
+ sc->sc_curchan.channel);
+ sc->sc_stats.ast_per_calfail++;
+ }
+ ic->ic_channoise = ath_hal_get_channel_noise(ah, &(sc->sc_curchan));
- sc->sc_cal_ch.expires = jiffies + (ath_calinterval * HZ);
- add_timer(&sc->sc_cal_ch);
-@@ -8252,6 +8253,7 @@
+ ath_hal_process_noisefloor(ah);
+ if (isIQdone == AH_TRUE) {
+@@ -9034,6 +9033,7 @@
struct ath_softc *sc = dev->priv;
(void) ath_chan_set(sc, ic->ic_curchan);
-+ ic->ic_channoise = ath_hal_get_channel_noise(ah, &(sc->sc_curchan));
++ ic->ic_channoise = ath_hal_get_channel_noise(sc->sc_ah, &(sc->sc_curchan));
/*
* If we are returning to our bss channel then mark state
* so the next recv'd beacon's TSF will be used to sync the
-@@ -8466,6 +8468,7 @@
+@@ -9302,6 +9302,7 @@
}
ath_hal_process_noisefloor(ah);
+ ic->ic_channoise = ath_hal_get_channel_noise(ah, &(sc->sc_curchan));
/*
- * Configure the beacon and sleep timers.
+ * Reset rssi stats; maybe not the best place...
*/
+--- a/net80211/ieee80211_wireless.c
++++ b/net80211/ieee80211_wireless.c
+@@ -4358,6 +4358,7 @@
+ si->isi_state = ni->ni_flags;
+ si->isi_authmode = ni->ni_authmode;
+ si->isi_rssi = ic->ic_node_getrssi(ni);
++ si->isi_noise = ic->ic_channoise;
+ si->isi_capinfo = ni->ni_capinfo;
+ si->isi_athflags = ni->ni_ath_flags;
+ si->isi_erp = ni->ni_erp;
+--- a/net80211/ieee80211_ioctl.h
++++ b/net80211/ieee80211_ioctl.h
+@@ -311,6 +311,7 @@
+ u_int16_t isi_state; /* state flags */
+ u_int8_t isi_authmode; /* authentication algorithm */
+ u_int8_t isi_rssi;
++ int8_t isi_noise;
+ u_int16_t isi_capinfo; /* capabilities */
+ u_int8_t isi_athflags; /* Atheros capabilities */
+ u_int8_t isi_erp; /* ERP element */