Thread (14 messages) 14 messages, 5 authors, 2012-06-26

Re: [PATCH] mac80211: add command to get current rssi

From: Johannes Berg <johannes@sipsolutions.net>
Date: 2012-05-29 07:11:03

On Wed, 2012-05-23 at 11:51 +0300, Goldenshtein, Victor wrote:
On Wed, May 23, 2012 at 9:58 AM, Goldenshtein, Victor [off-list ref] wrote:
quoted
On Tue, May 22, 2012 at 9:40 PM, Johannes Berg
[off-list ref] wrote:
quoted
On Tue, 2012-05-22 at 09:45 +0300, Victor Goldenshtein wrote:
quoted
@@ -388,7 +389,10 @@ static void sta_set_sinfo(struct sta_info *sta, struct station_info *sinfo)
      if ((sta->local->hw.flags & IEEE80211_HW_SIGNAL_DBM) ||
          (sta->local->hw.flags & IEEE80211_HW_SIGNAL_UNSPEC)) {
              sinfo->filled |= STATION_INFO_SIGNAL | STATION_INFO_SIGNAL_AVG;
-             sinfo->signal = (s8)sta->last_signal;
+             if (local->ops->get_rssi)
+                     drv_get_rssi(local, sdata, &sinfo->signal);
+             else
+                     sinfo->signal = (s8)sta->last_signal;
              sinfo->signal_avg = (s8) -ewma_read(&sta->avg_signal);
      }
So .. you're filling a per-station value with a generic per-interface
callback? What were you thinking? ;-)
This is this is for managed only.
I can rename the drv_get_rssi() to drv_get_sta_rssi() and to call it
only for NL80211_IFTYPE_STATION, I think it would clarify things?
Alternatively we could leave it as general callback "drv_get_rssi()",
add the peer address and let the driver decide if it supports
retrieval of the rssi for the given peer.  Thus, allowing us to do
something like:

if (!local->ops->get_rssi) || (drv_get_rssi(local, sdata,
sta->sta.addr, &sinfo->signal))
        sinfo->signal = (s8)sta->last_signal;
That's probably better.

johannes
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help