Commit 19434148 authored by John W. Linville's avatar John W. Linville

wl1251: add get_survey callback in order to get channel noise

Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
Acked-by: default avatarKalle Valo <kvalo@adurom.com>
parent a55427e8
...@@ -381,6 +381,9 @@ struct wl1251 { ...@@ -381,6 +381,9 @@ struct wl1251 {
u32 chip_id; u32 chip_id;
char fw_ver[21]; char fw_ver[21];
/* Most recently reported noise in dBm */
s8 noise;
}; };
int wl1251_plt_start(struct wl1251 *wl); int wl1251_plt_start(struct wl1251 *wl);
......
...@@ -1172,6 +1172,22 @@ static int wl1251_op_conf_tx(struct ieee80211_hw *hw, u16 queue, ...@@ -1172,6 +1172,22 @@ static int wl1251_op_conf_tx(struct ieee80211_hw *hw, u16 queue,
return ret; return ret;
} }
static int wl1251_op_get_survey(struct ieee80211_hw *hw, int idx,
struct survey_info *survey)
{
struct wl1251 *wl = hw->priv;
struct ieee80211_conf *conf = &hw->conf;
if (idx != 0)
return -ENOENT;
survey->channel = conf->channel;
survey->filled = SURVEY_INFO_NOISE_DBM;
survey->noise = wl->noise;
return 0;
}
/* can't be const, mac80211 writes to this */ /* can't be const, mac80211 writes to this */
static struct ieee80211_supported_band wl1251_band_2ghz = { static struct ieee80211_supported_band wl1251_band_2ghz = {
.channels = wl1251_channels, .channels = wl1251_channels,
...@@ -1193,6 +1209,7 @@ static const struct ieee80211_ops wl1251_ops = { ...@@ -1193,6 +1209,7 @@ static const struct ieee80211_ops wl1251_ops = {
.bss_info_changed = wl1251_op_bss_info_changed, .bss_info_changed = wl1251_op_bss_info_changed,
.set_rts_threshold = wl1251_op_set_rts_threshold, .set_rts_threshold = wl1251_op_set_rts_threshold,
.conf_tx = wl1251_op_conf_tx, .conf_tx = wl1251_op_conf_tx,
.get_survey = wl1251_op_get_survey,
}; };
static int wl1251_read_eeprom_byte(struct wl1251 *wl, off_t offset, u8 *data) static int wl1251_read_eeprom_byte(struct wl1251 *wl, off_t offset, u8 *data)
......
...@@ -74,6 +74,12 @@ static void wl1251_rx_status(struct wl1251 *wl, ...@@ -74,6 +74,12 @@ static void wl1251_rx_status(struct wl1251 *wl,
status->signal = desc->rssi; status->signal = desc->rssi;
/*
* FIXME: guessing that snr needs to be divided by two, otherwise
* the values don't make any sense
*/
wl->noise = desc->rssi - desc->snr / 2;
status->freq = ieee80211_channel_to_frequency(desc->channel); status->freq = ieee80211_channel_to_frequency(desc->channel);
status->flag |= RX_FLAG_TSFT; status->flag |= RX_FLAG_TSFT;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment