|
@@ -622,7 +622,6 @@ static void iwl3945_rx_reply_rx(struct iwl_priv *priv,
|
|
|
struct iwl3945_rx_frame_stats *rx_stats = IWL_RX_STATS(pkt);
|
|
|
struct iwl3945_rx_frame_hdr *rx_hdr = IWL_RX_HDR(pkt);
|
|
|
struct iwl3945_rx_frame_end *rx_end = IWL_RX_END(pkt);
|
|
|
- int snr;
|
|
|
u16 rx_stats_sig_avg = le16_to_cpu(rx_stats->sig_avg);
|
|
|
u16 rx_stats_noise_diff = le16_to_cpu(rx_stats->noise_diff);
|
|
|
u8 network_packet;
|
|
@@ -662,43 +661,19 @@ static void iwl3945_rx_reply_rx(struct iwl_priv *priv,
|
|
|
/* Convert 3945's rssi indicator to dBm */
|
|
|
rx_status.signal = rx_stats->rssi - IWL39_RSSI_OFFSET;
|
|
|
|
|
|
- /* Set default noise value to -127 */
|
|
|
- if (priv->last_rx_noise == 0)
|
|
|
- priv->last_rx_noise = IWL_NOISE_MEAS_NOT_AVAILABLE;
|
|
|
-
|
|
|
- /* 3945 provides noise info for OFDM frames only.
|
|
|
- * sig_avg and noise_diff are measured by the 3945's digital signal
|
|
|
- * processor (DSP), and indicate linear levels of signal level and
|
|
|
- * distortion/noise within the packet preamble after
|
|
|
- * automatic gain control (AGC). sig_avg should stay fairly
|
|
|
- * constant if the radio's AGC is working well.
|
|
|
- * Since these values are linear (not dB or dBm), linear
|
|
|
- * signal-to-noise ratio (SNR) is (sig_avg / noise_diff).
|
|
|
- * Convert linear SNR to dB SNR, then subtract that from rssi dBm
|
|
|
- * to obtain noise level in dBm.
|
|
|
- * Calculate rx_status.signal (quality indicator in %) based on SNR. */
|
|
|
- if (rx_stats_noise_diff) {
|
|
|
- snr = rx_stats_sig_avg / rx_stats_noise_diff;
|
|
|
- rx_status.noise = rx_status.signal -
|
|
|
- iwl3945_calc_db_from_ratio(snr);
|
|
|
- } else {
|
|
|
- rx_status.noise = priv->last_rx_noise;
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- IWL_DEBUG_STATS(priv, "Rssi %d noise %d sig_avg %d noise_diff %d\n",
|
|
|
- rx_status.signal, rx_status.noise,
|
|
|
- rx_stats_sig_avg, rx_stats_noise_diff);
|
|
|
+ IWL_DEBUG_STATS(priv, "Rssi %d sig_avg %d noise_diff %d\n",
|
|
|
+ rx_status.signal, rx_stats_sig_avg,
|
|
|
+ rx_stats_noise_diff);
|
|
|
|
|
|
header = (struct ieee80211_hdr *)IWL_RX_DATA(pkt);
|
|
|
|
|
|
network_packet = iwl3945_is_network_packet(priv, header);
|
|
|
|
|
|
- IWL_DEBUG_STATS_LIMIT(priv, "[%c] %d RSSI:%d Signal:%u, Noise:%u, Rate:%u\n",
|
|
|
+ IWL_DEBUG_STATS_LIMIT(priv, "[%c] %d RSSI:%d Signal:%u, Rate:%u\n",
|
|
|
network_packet ? '*' : ' ',
|
|
|
le16_to_cpu(rx_hdr->channel),
|
|
|
rx_status.signal, rx_status.signal,
|
|
|
- rx_status.noise, rx_status.rate_idx);
|
|
|
+ rx_status.rate_idx);
|
|
|
|
|
|
/* Set "1" to report good data frames in groups of 100 */
|
|
|
iwl3945_dbg_report_frame(priv, pkt, header, 1);
|
|
@@ -709,7 +684,6 @@ static void iwl3945_rx_reply_rx(struct iwl_priv *priv,
|
|
|
le32_to_cpu(rx_end->beacon_timestamp);
|
|
|
priv->_3945.last_tsf = le64_to_cpu(rx_end->timestamp);
|
|
|
priv->_3945.last_rx_rssi = rx_status.signal;
|
|
|
- priv->last_rx_noise = rx_status.noise;
|
|
|
}
|
|
|
|
|
|
iwl3945_pass_packet_to_mac80211(priv, rxb, &rx_status);
|