09 Apr, 2008

1 commit


07 Mar, 2008

4 commits


01 Mar, 2008

1 commit

  • This patch creates new cfg80211 wiphy API for channel and bitrate
    registration and converts mac80211 and drivers to the new API. The
    old mac80211 API is completely ripped out. All drivers (except ath5k)
    are updated to the new API, in many cases I expect that optimisations
    can be done.

    Along with the regulatory code I've also ripped out the
    IEEE80211_HW_DEFAULT_REG_DOMAIN_CONFIGURED flag, I believe it to be
    unnecessary if the hardware simply gives us whatever channels it wants
    to support and we then enable/disable them as required, which is pretty
    much required for travelling.

    Additionally, the patch adds proper "basic" rate handling for STA
    mode interface, AP mode interface will have to have new API added
    to allow userspace to set the basic rate set, currently it'll be
    empty... However, the basic rate handling will need to be moved to
    the BSS conf stuff.

    I do expect there to be bugs in this, especially wrt. transmit
    power handling where I'm basically clueless about how it should work.

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

    Johannes Berg
     

29 Jan, 2008

9 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
     
  • 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 patch gets rid of the if_id stuff where possible in favour of
    a new per-virtual-interface structure "struct ieee80211_vif". This
    structure is located at the end of the per-interface structure and
    contains a variable length driver-use data area.

    This has two advantages:
    * removes the need to look up interfaces by if_id, this is better
    for working with network namespaces and performance
    * allows drivers to store and retrieve per-interface data without
    having to allocate own lists/hash tables

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

    Johannes Berg
     
  • This patch adds the ability to handle Block Ack Request

    Signed-off-by: Ron Rindjunsky
    Signed-off-by: John W. Linville
    Signed-off-by: David S. Miller

    Ron Rindjunsky
     
  • The previous patch left only one user of the ieee80211_is_eapol()
    function and that user can be eliminated easily by introducing
    a new "frame is EAPOL" flag to handle the frame specially (we
    already have this information) instead of doing the (expensive)
    ieee80211_is_eapol() all the time.

    Also, allow unencrypted frames to be sent when they are injected.

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

    Johannes Berg
     
  • This patch fixes should_drop_frame function to pass in ps poll control
    frames required for power save functioanlity. Interface types that do not
    have interest for PS POLL frames now drop it in handler.

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

    Ron Rindjunsky
     
  • Interface iteration in mac80211 can be done without holding any
    locks because I converted it to RCU. Initially, I thought this
    wouldn't be needed for ieee80211_iterate_active_interfaces but
    it's turning out that multi-BSS AP support can be much simpler
    in a driver if ieee80211_iterate_active_interfaces can be called
    without holding locks. This converts it to use RCU, it adds a
    requirement that the callback it invokes cannot sleep.

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

    Johannes Berg
     
  • This patch restructures the Rx handlers chain by incorporating previously
    handlers ieee80211_rx_h_802_1x_pae and ieee80211_rx_h_drop_unencrypted
    into ieee80211_rx_h_data, already in 802.3 form. this scheme follows more
    precisely after the IEEE802.11 data plane archituecture, and will prevent
    code duplication to IEEE8021.11n A-MSDU handler.

    added function:
    - ieee80211_data_to_8023: transfering 802.11 data frames to 802.3 frame
    - ieee80211_deliver_skb: delivering the 802.3 frames to upper stack
    eliminated handlers:
    - ieee80211_rx_h_drop_unencrypted: now function ieee80211_drop_unencrypted
    - ieee80211_rx_h_802_1x_pae: now function ieee80211_802_1x_pae
    changed handlers:
    - ieee80211_rx_h_data: now contains calls to four above function

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

    Ron Rindjunsky
     
  • Sometimes drivers need to know which interfaces are associated with
    their hardware. Rather than forcing those drivers to keep track of
    the interfaces that were added, this adds an iteration function to
    mac80211.

    As it is intended to be used from the interface add/remove callbacks,
    the iteration function may currently only be called under RTNL.

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

    Johannes Berg
     

11 Oct, 2007

6 commits

  • This fixes a warning about NUM_IEEE80211_MODES missing
    in a switch statement. Intentionally do not add a default
    case so we get warnings at these places if we need to add
    new modes.

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

    Johannes Berg
     
  • This patch removes all mention of the atheros turbo modes that
    can't possibly work properly anyway since in some places we don't
    check for them when we should.

    I have no idea what the iwlwifi drivers were doing with these but
    it can't possibly have been correct.

    Cc: Zhu Yi
    Signed-off-by: Johannes Berg
    Acked-by: Michael Wu
    Signed-off-by: John W. Linville
    Signed-off-by: David S. Miller

    Johannes Berg
     
  • This patch makes most of the generic device layer network
    namespace safe. This patch makes dev_base_head a
    network namespace variable, and then it picks up
    a few associated variables. The functions:
    dev_getbyhwaddr
    dev_getfirsthwbytype
    dev_get_by_flags
    dev_get_by_name
    __dev_get_by_name
    dev_get_by_index
    __dev_get_by_index
    dev_ioctl
    dev_ethtool
    dev_load
    wireless_process_ioctl

    were modified to take a network namespace argument, and
    deal with it.

    vlan_ioctl_set and brioctl_set were modified so their
    hooks will receive a network namespace argument.

    So basically anthing in the core of the network stack that was
    affected to by the change of dev_base was modified to handle
    multiple network namespaces. The rest of the network stack was
    simply modified to explicitly use &init_net the initial network
    namespace. This can be fixed when those components of the network
    stack are modified to handle multiple network namespaces.

    For now the ifindex generator is left global.

    Fundametally ifindex numbers are per namespace, or else
    we will have corner case problems with migration when
    we get that far.

    At the same time there are assumptions in the network stack
    that the ifindex of a network device won't change. Making
    the ifindex number global seems a good compromise until
    the network stack can cope with ifindex changes when
    you change namespaces, and the like.

    Signed-off-by: Eric W. Biederman
    Signed-off-by: David S. Miller

    Eric W. Biederman
     
  • 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
     
  • Similarly to CTS protection, whether short preambles are used for 802.11b
    transmissions should be a per-subif setting, not device global.

    For STAs, this patch makes short preamble handling automatic based on the ERP
    IE. For APs, hostapd still uses the prism ioctls, but the write ioctl has been
    restricted to AP-only subifs.

    ieee80211_txrx_data.short_preamble (an unused field) was removed.

    Unfortunately, some API changes were required for the following functions:
    - ieee80211_generic_frame_duration
    - ieee80211_rts_duration
    - ieee80211_ctstoself_duration
    - ieee80211_rts_get
    - ieee80211_ctstoself_get
    Affected drivers were updated accordingly.

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

    Daniel Drake
     
  • Introduce a new file util.c and move a whole bunch of functions into it.

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

    Johannes Berg