Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=478f8d2ba56b40ad1c17e21c1503669b83c96e8e
Commit:     478f8d2ba56b40ad1c17e21c1503669b83c96e8e
Parent:     42613db7605a68a70f97513137392bda9b27bb9e
Author:     Tomas Winkler <[EMAIL PROTECTED]>
AuthorDate: Sun Sep 30 13:52:37 2007 +0200
Committer:  David S. Miller <[EMAIL PROTECTED]>
CommitDate: Wed Oct 10 16:54:21 2007 -0700

    [MAC80211]: add sta_notify callback
    
    This patch adds sta_notify callback and removes sta_table_notification
    which was not used by any driver.
    sta_notify() is essential for drivers that keeps notion of station
    internally and need to be notified about removal or addition of a station
    to the (I)BSS or assocation to an AP.
    
    This version adds interface id to the parameter list
    as suggested by Johannes Berg
    
    Signed-off-by: Tomas Winkler <[EMAIL PROTECTED]>
    Acked-by: Johannes Berg <[EMAIL PROTECTED]>
    Signed-off-by: John W. Linville <[EMAIL PROTECTED]>
    Signed-off-by: David S. Miller <[EMAIL PROTECTED]>
---
 include/net/mac80211.h  |   20 ++++++++++++++++----
 net/mac80211/sta_info.c |   13 +++++++------
 2 files changed, 23 insertions(+), 10 deletions(-)

diff --git a/include/net/mac80211.h b/include/net/mac80211.h
index eac670a..9bc03f0 100644
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
@@ -613,6 +613,18 @@ enum set_key_cmd {
        SET_KEY, DISABLE_KEY,
 };
 
+/**
+ * enum sta_notify_cmd - sta notify command
+ *
+ * Used with the sta_notify() callback in &struct ieee80211_ops, this
+ * indicates addition and removal of a station to station table
+ *
+ * @STA_NOTIFY_ADD: a station was added to the station table
+ * @STA_NOTIFY_REMOVE: a station being removed from the station table
+ */
+enum sta_notify_cmd {
+       STA_NOTIFY_ADD, STA_NOTIFY_REMOVE
+};
 
 /**
  * enum ieee80211_hw_flags - hardware flags
@@ -957,8 +969,8 @@ enum ieee80211_erp_change_flags {
  *
  * @set_retry_limit: Configuration of retry limits (if device needs it)
  *
- * @sta_table_notification: Number of STAs in STA table notification. Must
- *     be atomic.
+ * @sta_notify: Notifies low level driver about addition or removal
+ *     of assocaited station or AP.
  *
  * @erp_ie_changed: Handle ERP IE change notifications. Must be atomic.
  *
@@ -1025,8 +1037,8 @@ struct ieee80211_ops {
        int (*set_frag_threshold)(struct ieee80211_hw *hw, u32 value);
        int (*set_retry_limit)(struct ieee80211_hw *hw,
                               u32 short_retry, u32 long_retr);
-       void (*sta_table_notification)(struct ieee80211_hw *hw,
-                                      int num_sta);
+       void (*sta_notify)(struct ieee80211_hw *hw, int if_id,
+                       enum sta_notify_cmd, const u8 *addr);
        void (*erp_ie_changed)(struct ieee80211_hw *hw, u8 changes,
                               int cts_protection, int preamble);
        int (*conf_tx)(struct ieee80211_hw *hw, int queue,
diff --git a/net/mac80211/sta_info.c b/net/mac80211/sta_info.c
index 7c7df87..e849155 100644
--- a/net/mac80211/sta_info.c
+++ b/net/mac80211/sta_info.c
@@ -159,9 +159,9 @@ struct sta_info * sta_info_add(struct ieee80211_local 
*local,
        list_add(&sta->list, &local->sta_list);
        local->num_sta++;
        sta_info_hash_add(local, sta);
-       if (local->ops->sta_table_notification)
-               local->ops->sta_table_notification(local_to_hw(local),
-                                                 local->num_sta);
+       if (local->ops->sta_notify)
+               local->ops->sta_notify(local_to_hw(local), dev->ifindex,
+                                       STA_NOTIFY_ADD, addr);
        write_unlock_bh(&local->sta_lock);
 
 #ifdef CONFIG_MAC80211_VERBOSE_DEBUG
@@ -199,9 +199,6 @@ void sta_info_remove(struct sta_info *sta)
        local->num_sta--;
        sta_info_remove_aid_ptr(sta);
 
-       if (local->ops->sta_table_notification)
-               local->ops->sta_table_notification(local_to_hw(local),
-                                                  local->num_sta);
 }
 
 void sta_info_free(struct sta_info *sta)
@@ -232,6 +229,10 @@ void sta_info_free(struct sta_info *sta)
        ieee80211_key_free(sta->key);
        sta->key = NULL;
 
+       if (local->ops->sta_notify)
+               local->ops->sta_notify(local_to_hw(local), sta->dev->ifindex,
+                                       STA_NOTIFY_REMOVE, sta->addr);
+
        rate_control_remove_sta_debugfs(sta);
        ieee80211_sta_debugfs_remove(sta);
 
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to