mirror of https://gitee.com/openkylin/linux.git
wl1251: add get_survey callback in order to get channel noise
Signed-off-by: John W. Linville <linville@tuxdriver.com> Acked-by: Kalle Valo <kvalo@adurom.com>
This commit is contained in:
parent
a55427e828
commit
19434148d1
|
@ -381,6 +381,9 @@ struct wl1251 {
|
|||
|
||||
u32 chip_id;
|
||||
char fw_ver[21];
|
||||
|
||||
/* Most recently reported noise in dBm */
|
||||
s8 noise;
|
||||
};
|
||||
|
||||
int wl1251_plt_start(struct wl1251 *wl);
|
||||
|
|
|
@ -1172,6 +1172,22 @@ static int wl1251_op_conf_tx(struct ieee80211_hw *hw, u16 queue,
|
|||
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 */
|
||||
static struct ieee80211_supported_band wl1251_band_2ghz = {
|
||||
.channels = wl1251_channels,
|
||||
|
@ -1193,6 +1209,7 @@ static const struct ieee80211_ops wl1251_ops = {
|
|||
.bss_info_changed = wl1251_op_bss_info_changed,
|
||||
.set_rts_threshold = wl1251_op_set_rts_threshold,
|
||||
.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)
|
||||
|
|
|
@ -74,6 +74,12 @@ static void wl1251_rx_status(struct wl1251 *wl,
|
|||
|
||||
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->flag |= RX_FLAG_TSFT;
|
||||
|
|
Loading…
Reference in New Issue