提交 18cfd3bf 编写于 作者: J Johannes Berg

Revert "mac80211: add driver callback for per-interface multicast filter"

This reverts commit 488b366a.

The code isn't used by anyone, and the Intel driver isn't planning
to use it either right now.
Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
上级 ddcc347b
...@@ -2398,9 +2398,6 @@ enum ieee80211_roc_type { ...@@ -2398,9 +2398,6 @@ enum ieee80211_roc_type {
* See the section "Frame filtering" for more information. * See the section "Frame filtering" for more information.
* This callback must be implemented and can sleep. * This callback must be implemented and can sleep.
* *
* @set_multicast_list: Configure the device's interface specific RX multicast
* filter. This callback is optional. This callback must be atomic.
*
* @set_tim: Set TIM bit. mac80211 calls this function when a TIM bit * @set_tim: Set TIM bit. mac80211 calls this function when a TIM bit
* must be set or cleared for a given STA. Must be atomic. * must be set or cleared for a given STA. Must be atomic.
* *
...@@ -2764,10 +2761,6 @@ struct ieee80211_ops { ...@@ -2764,10 +2761,6 @@ struct ieee80211_ops {
unsigned int changed_flags, unsigned int changed_flags,
unsigned int *total_flags, unsigned int *total_flags,
u64 multicast); u64 multicast);
void (*set_multicast_list)(struct ieee80211_hw *hw,
struct ieee80211_vif *vif, bool allmulti,
struct netdev_hw_addr_list *mc_list);
int (*set_tim)(struct ieee80211_hw *hw, struct ieee80211_sta *sta, int (*set_tim)(struct ieee80211_hw *hw, struct ieee80211_sta *sta,
bool set); bool set);
int (*set_key)(struct ieee80211_hw *hw, enum set_key_cmd cmd, int (*set_key)(struct ieee80211_hw *hw, enum set_key_cmd cmd,
......
...@@ -242,22 +242,6 @@ static inline u64 drv_prepare_multicast(struct ieee80211_local *local, ...@@ -242,22 +242,6 @@ static inline u64 drv_prepare_multicast(struct ieee80211_local *local,
return ret; return ret;
} }
static inline void drv_set_multicast_list(struct ieee80211_local *local,
struct ieee80211_sub_if_data *sdata,
struct netdev_hw_addr_list *mc_list)
{
bool allmulti = sdata->flags & IEEE80211_SDATA_ALLMULTI;
trace_drv_set_multicast_list(local, sdata, mc_list->count);
check_sdata_in_driver(sdata);
if (local->ops->set_multicast_list)
local->ops->set_multicast_list(&local->hw, &sdata->vif,
allmulti, mc_list);
trace_drv_return_void(local);
}
static inline void drv_configure_filter(struct ieee80211_local *local, static inline void drv_configure_filter(struct ieee80211_local *local,
unsigned int changed_flags, unsigned int changed_flags,
unsigned int *total_flags, unsigned int *total_flags,
......
...@@ -1018,17 +1018,6 @@ static void ieee80211_set_multicast_list(struct net_device *dev) ...@@ -1018,17 +1018,6 @@ static void ieee80211_set_multicast_list(struct net_device *dev)
atomic_dec(&local->iff_promiscs); atomic_dec(&local->iff_promiscs);
sdata->flags ^= IEEE80211_SDATA_PROMISC; sdata->flags ^= IEEE80211_SDATA_PROMISC;
} }
/*
* TODO: If somebody needs this on AP interfaces,
* it can be enabled easily but multicast
* addresses from VLANs need to be synced.
*/
if (sdata->vif.type != NL80211_IFTYPE_MONITOR &&
sdata->vif.type != NL80211_IFTYPE_AP_VLAN &&
sdata->vif.type != NL80211_IFTYPE_AP)
drv_set_multicast_list(local, sdata, &dev->mc);
spin_lock_bh(&local->filter_lock); spin_lock_bh(&local->filter_lock);
__hw_addr_sync(&local->mc_list, &dev->mc, dev->addr_len); __hw_addr_sync(&local->mc_list, &dev->mc, dev->addr_len);
spin_unlock_bh(&local->filter_lock); spin_unlock_bh(&local->filter_lock);
......
...@@ -443,30 +443,6 @@ TRACE_EVENT(drv_prepare_multicast, ...@@ -443,30 +443,6 @@ TRACE_EVENT(drv_prepare_multicast,
) )
); );
TRACE_EVENT(drv_set_multicast_list,
TP_PROTO(struct ieee80211_local *local,
struct ieee80211_sub_if_data *sdata, int mc_count),
TP_ARGS(local, sdata, mc_count),
TP_STRUCT__entry(
LOCAL_ENTRY
__field(bool, allmulti)
__field(int, mc_count)
),
TP_fast_assign(
LOCAL_ASSIGN;
__entry->allmulti = sdata->flags & IEEE80211_SDATA_ALLMULTI;
__entry->mc_count = mc_count;
),
TP_printk(
LOCAL_PR_FMT " configure mc filter, count=%d, allmulti=%d",
LOCAL_PR_ARG, __entry->mc_count, __entry->allmulti
)
);
TRACE_EVENT(drv_configure_filter, TRACE_EVENT(drv_configure_filter,
TP_PROTO(struct ieee80211_local *local, TP_PROTO(struct ieee80211_local *local,
unsigned int changed_flags, unsigned int changed_flags,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册