]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - net/mac80211/driver-ops.h
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wirel...
[mv-sheeva.git] / net / mac80211 / driver-ops.h
index c3d844093a2f9203127f1cb10ee1f1d9b97a68ae..7d18a3245e3d8475cb045d52977827d00649bc9a 100644 (file)
@@ -83,17 +83,32 @@ static inline void drv_bss_info_changed(struct ieee80211_local *local,
        trace_drv_bss_info_changed(local, sdata, info, changed);
 }
 
+struct in_ifaddr;
+static inline int drv_configure_arp_filter(struct ieee80211_local *local,
+                                          struct ieee80211_vif *vif,
+                                          struct in_ifaddr *ifa_list)
+{
+       int ret = 0;
+
+       might_sleep();
+
+       if (local->ops->configure_arp_filter)
+               ret = local->ops->configure_arp_filter(&local->hw, vif,
+                                                      ifa_list);
+
+       trace_drv_configure_arp_filter(local, vif_to_sdata(vif), ifa_list, ret);
+       return ret;
+}
+
 static inline u64 drv_prepare_multicast(struct ieee80211_local *local,
-                                       int mc_count,
-                                       struct dev_addr_list *mc_list)
+                                       struct netdev_hw_addr_list *mc_list)
 {
        u64 ret = 0;
 
        if (local->ops->prepare_multicast)
-               ret = local->ops->prepare_multicast(&local->hw, mc_count,
-                                                   mc_list);
+               ret = local->ops->prepare_multicast(&local->hw, mc_list);
 
-       trace_drv_prepare_multicast(local, mc_count, ret);
+       trace_drv_prepare_multicast(local, mc_list->count, ret);
 
        return ret;
 }
@@ -154,14 +169,15 @@ static inline void drv_update_tkip_key(struct ieee80211_local *local,
 }
 
 static inline int drv_hw_scan(struct ieee80211_local *local,
+                             struct ieee80211_sub_if_data *sdata,
                              struct cfg80211_scan_request *req)
 {
        int ret;
 
        might_sleep();
 
-       ret = local->ops->hw_scan(&local->hw, req);
-       trace_drv_hw_scan(local, req, ret);
+       ret = local->ops->hw_scan(&local->hw, &sdata->vif, req);
+       trace_drv_hw_scan(local, sdata, req, ret);
        return ret;
 }
 
@@ -253,9 +269,6 @@ static inline int drv_sta_add(struct ieee80211_local *local,
 
        if (local->ops->sta_add)
                ret = local->ops->sta_add(&local->hw, &sdata->vif, sta);
-       else if (local->ops->sta_notify)
-               local->ops->sta_notify(&local->hw, &sdata->vif,
-                                       STA_NOTIFY_ADD, sta);
 
        trace_drv_sta_add(local, sdata, sta, ret);
 
@@ -270,9 +283,6 @@ static inline void drv_sta_remove(struct ieee80211_local *local,
 
        if (local->ops->sta_remove)
                local->ops->sta_remove(&local->hw, &sdata->vif, sta);
-       else if (local->ops->sta_notify)
-               local->ops->sta_notify(&local->hw, &sdata->vif,
-                                       STA_NOTIFY_REMOVE, sta);
 
        trace_drv_sta_remove(local, sdata, sta);
 }
@@ -346,6 +356,15 @@ static inline int drv_ampdu_action(struct ieee80211_local *local,
        return ret;
 }
 
+static inline int drv_get_survey(struct ieee80211_local *local, int idx,
+                               struct survey_info *survey)
+{
+       int ret = -EOPNOTSUPP;
+       if (local->ops->get_survey)
+               ret = local->ops->get_survey(&local->hw, idx, survey);
+       /* trace_drv_get_survey(local, idx, survey, ret); */
+       return ret;
+}
 
 static inline void drv_rfkill_poll(struct ieee80211_local *local)
 {
@@ -363,4 +382,15 @@ static inline void drv_flush(struct ieee80211_local *local, bool drop)
        if (local->ops->flush)
                local->ops->flush(&local->hw, drop);
 }
+
+static inline void drv_channel_switch(struct ieee80211_local *local,
+                                    struct ieee80211_channel_switch *ch_switch)
+{
+       might_sleep();
+
+       local->ops->channel_switch(&local->hw, ch_switch);
+
+       trace_drv_channel_switch(local, ch_switch);
+}
+
 #endif /* __MAC80211_DRIVER_OPS */