1. 01 4月, 2015 1 次提交
    • J
      mac80211: use rhashtable for station table · 7bedd0cf
      Johannes Berg 提交于
      We currently have a hand-rolled table with 256 entries and are
      using the last byte of the MAC address as the hash. This hash
      is obviously very fast, but collisions are easily created and
      we waste a lot of space in the common case of just connecting
      as a client to an AP where we just have a single station. The
      other common case of an AP is also suboptimal due to the size
      of the hash table and the ease of causing collisions.
      
      Convert all of this to use rhashtable with jhash, which gives
      us the advantage of a far better hash function (with random
      perturbation to avoid hash collision attacks) and of course
      that the hash table grows and shrinks dynamically with chain
      length, improving both cases above.
      
      Use a specialised hash function (using jhash, but with fixed
      length) to achieve better compiler optimisation as suggested
      by Sergey Ryazanov.
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      7bedd0cf
  2. 30 3月, 2015 20 次提交
  3. 20 3月, 2015 5 次提交
    • J
      mac80211: avoid duplicate TX path station lookup · 7c10770f
      Johannes Berg 提交于
      Instead of looking up the destination station twice in the TX path
      (first to build the header, and then for control processing), save
      it when building the header and use it later in the TX path.
      
      To avoid having to look up the station in the many callers, allow
      those to pass %NULL which keeps the existing lookup.
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      7c10770f
    • J
      mac80211: mesh: avoid pointless station lookup · e33f5569
      Johannes Berg 提交于
      In ieee80211_build_hdr(), the station is looked up to build the
      header correctly (QoS field) and to check for authorization. For
      mesh, authorization isn't checked here, and QoS capability is
      mandatory, so the station lookup can be avoided.
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      e33f5569
    • J
      mac80211: drop 4-addr VLAN frames earlier if not connected · a8d15ff0
      Johannes Berg 提交于
      If there's no station on the 4-addr VLAN interface, then frames
      cannot be transmitted. Drop such frames earlier, before setting
      up all the information for them.
      
      We should keep the old check though since that code might be used
      for other internally-generated frames.
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      a8d15ff0
    • J
      mac80211: don't look up destination station twice · 5041006c
      Johannes Berg 提交于
      There's no need to look up the destination station twice while
      building the 802.11 header for a given frame if the frame will
      actually be transmitted to the station we initially looked up.
      
      This happens for 4-addr VLAN interfaces and TDLS connections, which
      both directly send the frame to the station they looked up, though
      in the case of TDLS some station conditions need to be checked.
      
      To avoid that, add a variable indicating that we've looked up the
      station that the frame is going to be transmitted to, and avoid the
      lookup/flag checking if it already has been done.
      
      In the TDLS case, also move the authorized/wme_sta flag assignment
      to the correct place, i.e. only when that station is really used.
      Before this change, the new lookup should always have succeeded so
      that the potentially erroneous data would be overwritten.
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      5041006c
    • J
      mac80211: remove drop_unencrypted code · e8f4fb7c
      Johannes Berg 提交于
      This mechanism was historic, and only ever used by IBSS, which
      also doesn't need to have it as it properly manages station's
      802.1X PAE state (or, with WEP, always has a key.)
      
      Remove the mechanism to clean up the code.
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      e8f4fb7c
  4. 17 3月, 2015 4 次提交
  5. 16 3月, 2015 7 次提交
  6. 04 3月, 2015 3 次提交