28 Feb, 2009

1 commit

  • This patch splits out the ibss code and data from managed (station) mode.
    The reason to do this is to better separate the state machines, and have
    the code be contained better so it gets easier to determine what exactly
    a given change will affect, that in turn makes it easier to understand.

    This is quite some churn, especially because I split sdata->u.sta into
    sdata->u.mgd and sdata->u.ibss, but I think it's easier to maintain that
    way. I've also shuffled around some code -- null function sending is only
    applicable to managed interfaces so put that into that file, some other
    functions are needed from various places so put them into util, and also
    rearranged the prototypes in ieee80211_i.h accordingly.

    Signed-off-by: Johannes Berg
    Signed-off-by: John W. Linville

    Johannes Berg
     

01 Nov, 2008

2 commits

  • Move bss_conf into the vif struct so that drivers can
    access it during ->tx without having to store it in
    the private data or similar. No driver updates because
    this is only for when they want to start using it.

    Signed-off-by: Johannes Berg
    Signed-off-by: John W. Linville

    Johannes Berg
     
  • These parameters shouldn't be configurable via debugfs, if they
    need to be configurable nl80211 support has to be added, if not
    then they don't need to be writable here either.

    Signed-off-by: Johannes Berg
    Cc: Javier Cardona
    Cc: Luis Carlos Cobo
    Signed-off-by: John W. Linville

    Johannes Berg
     

28 Oct, 2008

1 commit


15 Oct, 2008

1 commit


16 Sep, 2008

3 commits

  • The beacon counters mac80211 keeps are only used for debugfs,
    unfortunately, they are incorrect for many hardware designs,
    namely any design that has a beacon template. Hence, remove the
    counters so we don't create the impression they are usable.

    This also allows removing the beacon MESH #ifdef again.

    Signed-off-by: Johannes Berg
    Signed-off-by: John W. Linville

    Johannes Berg
     
  • There's really no reason for mac80211 to be using its
    own interface type defines. Use the nl80211 types and
    simplify the configuration code a bit: there's no need
    to translate them any more now.

    Signed-off-by: Johannes Berg
    Signed-off-by: John W. Linville

    Johannes Berg
     
  • This patch splits off mesh handling from the STA/IBSS.
    Unfortunately it increases mesh code size a bit, but I
    think it makes things clearer. The patch also reduces
    per-interface run-time memory usage.

    Also clean up a few places where ifdef is not required.

    Signed-off-by: Johannes Berg
    Signed-off-by: John W. Linville

    Johannes Berg
     

27 Aug, 2008

1 commit

  • Previous version was using incorrect union structures for non-AP
    interfaces when adding and removing max_ratectrl_rateidx and
    force_unicast_rateidx entries. Depending on the vif type, this ended
    up in corrupting debugfs entries since the dentries inside different
    union structures ended up going being on top of eachother.. As the
    end result, debugfs files were being left behind with references to
    freed data (instant kernel oops on access) and directories were not
    removed properly when unloading mac80211 drivers. This patch fixes
    those issues by using only a single union structure based on the vif
    type.

    Signed-off-by: Jouni Malinen
    Signed-off-by: John W. Linville

    Jouni Malinen
     

15 Jul, 2008

2 commits

  • This patch revamps the virtual interface handling and makes the
    code much easier to follow. Fewer functions, better names, less
    spaghetti code.

    Signed-off-by: Johannes Berg
    Signed-off-by: John W. Linville

    Johannes Berg
     
  • Currently, almost every interface type has a 'bss' pointer
    pointing to BSS information. This BSS information, however,
    is for a _local_ BSS, not for the BSS we joined, so having
    it on a STA mode interface makes little sense, but now they
    have it pointing to the master device, which is an AP mode
    virtual interface. However, except for some bitrate control
    data, this pointer is only used in AP/VLAN modes (for power
    saving stations.)

    Overall, it is not necessary to even have the master netdev
    be a valid virtual interface, and it doesn't have to be on
    the list of interfaces either.

    This patch changes the master netdev to be special, it now
    - no longer is on the list of virtual interfaces, which
    lets me remove a lot of tests for that
    - no longer has sub_if_data attached, since that isn't used

    Additionally, this patch changes some vlan/ap mode handling
    that is related to these 'bss' pointers described above (but
    in the VLAN case they actually make sense because there they
    point to the AP they belong to); it also adds some debugging
    code to IEEE80211_DEV_TO_SUB_IF to validate it is not called
    on the master netdev any more.

    Signed-off-by: Johannes Berg
    Signed-off-by: John W. Linville

    Johannes Berg
     

22 May, 2008

1 commit

  • The useless channel use statistics are quite a lot of code, currently
    use integer divisions in the packet fast path, are rather inaccurate
    since they do not account for retries and finally nobody even cares.
    Hence, remove them completely.

    Signed-off-by: Johannes Berg
    Signed-off-by: John W. Linville

    Johannes Berg
     

08 May, 2008

1 commit


09 Apr, 2008

2 commits

  • This patch renames all mac80211 files (except ieee80211_i.h) to get rid
    of the useless ieee80211_ prefix.

    Signed-off-by: Johannes Berg
    Signed-off-by: John W. Linville

    Johannes Berg
     
  • Unfortunately, debugfs can be made to access invalid memory by
    open()ing a file and then waiting until the corresponding debugfs
    file has been removed (and, probably, the underlying object.)

    That could be exploited by any user if the user is able to open
    debugfs files and can cause networking devices, STA entries or
    similar to disappear which is quite easy to do.

    Hence, all debugfs files should be root-only.

    Signed-off-by: Johannes Berg
    Signed-off-by: John W. Linville

    Johannes Berg
     

02 Apr, 2008

2 commits


07 Mar, 2008

1 commit


01 Mar, 2008

1 commit

  • This patch removes the 802.1X port acess control enable flag
    since it is not required. Instead, set the authorized flag for
    each station that we normally communicate with (WDS peers, IBSS
    peers and APs we're associated to) and require hostapd to set
    the authorized flag for all stations when port control is not
    enabled.

    Also, since I was working in that area, this documents station
    flags and removes the unused "permanent" one.

    Signed-off-by: Johannes Berg
    Signed-off-by: John W. Linville

    Johannes Berg
     

29 Jan, 2008

4 commits

  • This patch (based on Ron Rindjunsky's) creates a framework for
    a unified way to pass BSS configuration to drivers that require
    the information, e.g. for implementing power save mode.

    This patch introduces new ieee80211_bss_conf structure that is
    passed to the driver via the new bss_info_changed() callback
    when the BSS configuration changes.

    This new BSS configuration infrastructure adds the following
    new features:
    * drivers are notified of their association AID
    * drivers are notified of association status

    and replaces the erp_ie_changed() callback. The patch also does
    the relevant driver updates for the latter change.

    Signed-off-by: Ron Rindjunsky
    Signed-off-by: Johannes Berg
    Signed-off-by: John W. Linville

    Johannes Berg
     
  • This patch implements the cfg80211 hooks for configuring beaconing
    on an access point interface in mac80211. While doing so, it fixes
    a number of races that could badly crash the machine when the
    beacon is changed while being requested by the driver.

    Signed-off-by: Johannes Berg
    Signed-off-by: John W. Linville

    Johannes Berg
     
  • Drivers that support mixed AP/STA operation may well need to
    know the type of a virtual interface when iterating over them.
    The easiest way to support that is to move the interface type
    variable into the vif structure.

    Signed-off-by: Johannes Berg
    Signed-off-by: John W. Linville

    Johannes Berg
     
  • This cleans up the eapol frame handling and some related code in the
    receive and transmit paths. After this patch
    * EAPOL frames addressed to us or the EAPOL group address are
    always accepted regardless of whether they are encrypted or not
    * other frames from a station are dropped if PAE is enabled and
    the station is not authorized
    * unencrypted frames (except the EAPOL frames above) are dropped if
    drop_unencrypted is enabled
    * some superfluous code that eth_type_trans handles anyway is gone
    * port control is done for transmitted packets

    Signed-off-by: Johannes Berg
    Signed-off-by: John W. Linville
    Signed-off-by: David S. Miller

    Johannes Berg
     

11 Oct, 2007

5 commits

  • This patch changes mac80211 to verify that VLAN interfaces
    are valid and not bother drivers about them any more.
    VLAN interfaces are now only valid when an AP interface
    is up with the same MAC address, and are automatically
    turned off when the AP interface is set down.

    Signed-off-by: Johannes Berg
    Cc: Jouni Malinen
    Signed-off-by: Michael Wu
    Signed-off-by: John W. Linville

    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: Johannes Berg
    Signed-off-by: Michael Wu
    Signed-off-by: Larry Finger
    Signed-off-by: Ivo van Doorn
    Signed-off-by: John W. Linville

    Johannes Berg
     
  • This is nicer than the MAC_FMT stuff.

    Signed-off-by: Joe Perches
    Signed-off-by: David S. Miller

    Joe Perches
     
  • mac80211, remove bitfields from struct ieee80211_sub_if_data

    Signed-off-by: Jiri Slaby
    Signed-off-by: Johannes Berg
    Acked-by: Michael Wu
    Signed-off-by: John W. Linville
    Signed-off-by: David S. Miller

    Jiri Slaby
     
  • mac80211, remove bitfields from struct ieee80211_if_sta

    Signed-off-by: Jiri Slaby
    Signed-off-by: Johannes Berg
    Acked-by: Michael Wu
    Signed-off-by: John W. Linville
    Signed-off-by: David S. Miller

    Jiri Slaby
     

07 Aug, 2007

1 commit


18 Jul, 2007

1 commit


13 Jul, 2007

1 commit

  • Currently, CTS protection is partially implemented twice:
    1. via prism2 ioctls, only used by hostapd
    2. via STA beacon parsing, recorded in sta.use_protection but never used
    (other than printed in debugfs)

    Protection control should be implemented on a per-subif basis. For example,
    a single physical device may be running a soft AP on one channel, and a STA
    on another. The AP interface should use protection based on what hostapd told
    it, and the STA interface should use protection based on beacon parsing.
    These should operate independantly: one subif using protection should not
    influence the other.

    To implement this, I moved the use_protection flag into ieee80211_sub_if_data
    and removed the device-global cts_protect_erp_frames flag.

    I also made the PRISM2_PARAM_CTS_PROTECT_ERP_FRAMES write operation only
    available for AP interfaces, to avoid any possibility of the user messing with
    the behaviour of a STA.

    Signed-off-by: Daniel Drake
    Signed-off-by: Jiri Benc
    Signed-off-by: John W. Linville

    Daniel Drake
     

06 May, 2007

1 commit