• J
    [PATCH] mac80211: revamp interface and filter configuration · 4150c572
    Johannes Berg 提交于
    Drivers are currently supposed to keep track of monitor
    interfaces if they allow so-called "hard" monitor, and
    they are also supposed to keep track of multicast etc.
    
    This patch changes that, replaces the set_multicast_list()
    callback with a new configure_filter() callback that takes
    filter flags (FIF_*) instead of interface flags (IFF_*).
    For a driver, this means it should open the filter as much
    as necessary to get all frames requested by the filter flags.
    Accordingly, the filter flags are named "positively", e.g.
    FIF_ALLMULTI.
    
    Multicast filtering is a bit special in that drivers that
    have no multicast address filters need to allow multicast
    frames through when either the FIF_ALLMULTI flag is set or
    when the mc_count value is positive.
    
    At the same time, drivers are no longer notified about
    monitor interfaces at all, this means they now need to
    implement the start() and stop() callbacks and the new
    change_filter_flags() callback. Also, the start()/stop()
    ordering changed, start() is now called *before* any
    add_interface() as it really should be, and stop() after
    any remove_interface().
    
    The patch also changes the behaviour of setting the bssid
    to multicast for scanning when IEEE80211_HW_NO_PROBE_FILTERING
    is set; the IEEE80211_HW_NO_PROBE_FILTERING flag is removed
    and the filter flag FIF_BCN_PRBRESP_PROMISC introduced.
    This is a lot more efficient for hardware like b43 that
    supports it and other hardware can still set the BSSID
    to all-ones.
    
    Driver modifications by Johannes Berg (b43 & iwlwifi), Michael Wu
    (rtl8187, adm8211, and p54), Larry Finger (b43legacy), and
    Ivo van Doorn (rt2x00).
    Signed-off-by: NJohannes Berg <johannes@sipsolutions.net>
    Signed-off-by: NMichael Wu <flamingice@sourmilk.net>
    Signed-off-by: NLarry Finger <Larry.Finger@lwfinger.net>
    Signed-off-by: NIvo van Doorn <IvDoorn@gmail.com>
    Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
    4150c572
main.c 103.9 KB