Commit ece550d0 authored by John W. Linville's avatar John W. Linville
Browse files

wl1271: add get_survey callback in order to get channel noise

parent bef9cb58
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -475,6 +475,9 @@ struct wl1271 {
	bool sg_enabled;

	struct list_head list;

	/* Most recently reported noise in dBm */
	s8 noise;
};

int wl1271_plt_start(struct wl1271 *wl);
+17 −0
Original line number Diff line number Diff line
@@ -1927,6 +1927,22 @@ out:
	return mactime;
}

static int wl1271_op_get_survey(struct ieee80211_hw *hw, int idx,
				struct survey_info *survey)
{
	struct wl1271 *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_rate wl1271_rates[] = {
	{ .bitrate = 10,
@@ -2156,6 +2172,7 @@ static const struct ieee80211_ops wl1271_ops = {
	.set_rts_threshold = wl1271_op_set_rts_threshold,
	.conf_tx = wl1271_op_conf_tx,
	.get_tsf = wl1271_op_get_tsf,
	.get_survey = wl1271_op_get_survey,
	CFG80211_TESTMODE_CMD(wl1271_tm_cmd)
};

+7 −0
Original line number Diff line number Diff line
@@ -55,6 +55,13 @@ static void wl1271_rx_status(struct wl1271 *wl,

	status->signal = desc->rssi;

	/*
	 * FIXME: In wl1251, the SNR should be divided by two.  In wl1271 we
	 * need to divide by two for now, but TI has been discussing about
	 * changing it.  This needs to be rechecked.
	 */
	wl->noise = desc->rssi - (desc->snr >> 1);

	status->freq = ieee80211_channel_to_frequency(desc->channel);

	if (desc->flags & WL1271_RX_DESC_ENCRYPT_MASK) {