From owner-p4-projects@FreeBSD.ORG Mon Feb 5 15:30:04 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 985A616A403; Mon, 5 Feb 2007 15:30:04 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 3885716A401 for ; Mon, 5 Feb 2007 15:30:04 +0000 (UTC) (envelope-from sephe@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 1C29B13C4BA for ; Mon, 5 Feb 2007 15:30:04 +0000 (UTC) (envelope-from sephe@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.6/8.13.6) with ESMTP id l15FU3qI067504 for ; Mon, 5 Feb 2007 15:30:03 GMT (envelope-from sephe@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.6/8.13.4/Submit) id l15FU3gM067501 for perforce@freebsd.org; Mon, 5 Feb 2007 15:30:03 GMT (envelope-from sephe@FreeBSD.org) Date: Mon, 5 Feb 2007 15:30:03 GMT Message-Id: <200702051530.l15FU3gM067501@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to sephe@FreeBSD.org using -f From: Sepherosa Ziehau To: Perforce Change Reviews Cc: Subject: PERFORCE change 114055 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 05 Feb 2007 15:30:05 -0000 http://perforce.freebsd.org/chv.cgi?CH=114055 Change 114055 by sephe@sephe_zealot:sam_wifi on 2007/02/05 15:29:03 For ral(4) rt2560 part: - Convert RSSI to receive signal strength(dbm) - Add noise floor zealot:ral# ifconfig ral0 up scan SSID BSSID CHAN RATE S:N INT CAPS sephewifi-test 00:16:b6:2b:cd:38 1 54M -52:-95 100 ES sephewifi 00:90:4c:7e:00:64 13 54M -55:-95 100 EP WPA zealot:ral# ifconfig ath0 up scan SSID BSSID CHAN RATE S:N INT CAPS sephewifi-test 00:16:b6:2b:cd:38 1 54M -55:-96 100 ES sephewifi 00:90:4c:7e:00:64 13 54M -55:-91 100 EP WPA Obtained-from: Dragonfly Affected files ... .. //depot/projects/wifi/sys/dev/ral/rt2560.c#13 edit .. //depot/projects/wifi/sys/dev/ral/rt2560reg.h#2 edit .. //depot/projects/wifi/sys/dev/ral/rt2560var.h#7 edit Differences ... ==== //depot/projects/wifi/sys/dev/ral/rt2560.c#13 (text) ==== @@ -65,6 +65,9 @@ #include #include +#define RT2560_RSSI(sc, rssi) \ + ((rssi) > (RT2560_NOISE_FLOOR + (sc)->rssi_corr) ? \ + ((rssi) - RT2560_NOISE_FLOOR - (sc)->rssi_corr) : 0) #ifdef RAL_DEBUG #define DPRINTF(x) do { if (ral_debug > 0) printf x; } while (0) @@ -1166,7 +1169,7 @@ tap->wr_chan_freq = htole16(ic->ic_curchan->ic_freq); tap->wr_chan_flags = htole16(ic->ic_curchan->ic_flags); tap->wr_antenna = sc->rx_ant; - tap->wr_antsignal = desc->rssi; + tap->wr_antsignal = RT2560_RSSI(sc, desc->rssi); bpf_mtap2(sc->sc_drvbpf, tap, sc->sc_rxtap_len, m); } @@ -1178,11 +1181,13 @@ (struct ieee80211_frame_min *)wh); /* send the frame to the 802.11 layer */ - ieee80211_input(ic, m, ni, desc->rssi, 0, 0); + ieee80211_input(ic, m, ni, RT2560_RSSI(sc, desc->rssi), + RT2560_NOISE_FLOOR, 0); /* give rssi to the rate adatation algorithm */ rn = (struct rt2560_node *)ni; - ral_rssadapt_input(ic, ni, &rn->rssadapt, desc->rssi); + ral_rssadapt_input(ic, ni, &rn->rssadapt, + RT2560_RSSI(sc, desc->rssi)); /* node is no longer needed */ ieee80211_free_node(ni); @@ -2540,6 +2545,14 @@ sc->txpow[i * 2] = val >> 8; sc->txpow[i * 2 + 1] = val & 0xff; } + + val = rt2560_eeprom_read(sc, RT2560_EEPROM_CALIBRATE); + if ((val & 0xff00) == 0xff00) + sc->rssi_corr = RT2560_DEFAULT_RSSI_CORR; + else + sc->rssi_corr = val >> 8; + DPRINTF(("rssi correction %d, calibrate 0x%02x\n", + sc->rssi_corr, val)); } ==== //depot/projects/wifi/sys/dev/ral/rt2560reg.h#2 (text) ==== @@ -17,6 +17,9 @@ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ +#define RT2560_DEFAULT_RSSI_CORR 0x79 +#define RT2560_NOISE_FLOOR -95 + #define RT2560_TX_RING_COUNT 48 #define RT2560_ATIM_RING_COUNT 4 #define RT2560_PRIO_RING_COUNT 16 @@ -296,6 +299,7 @@ #define RT2560_EEPROM_CONFIG0 16 #define RT2560_EEPROM_BBP_BASE 19 #define RT2560_EEPROM_TXPOWER 35 +#define RT2560_EEPROM_CALIBRATE 62 /* * control and status registers access macros ==== //depot/projects/wifi/sys/dev/ral/rt2560var.h#7 (text) ==== @@ -120,6 +120,7 @@ uint32_t asic_rev; uint32_t eeprom_rev; uint8_t rf_rev; + uint8_t rssi_corr; struct rt2560_tx_ring txq; struct rt2560_tx_ring prioq;