1. 08 12月, 2009 5 次提交
    • L
      mwl8k: properly report rate on received 40MHz packets · 8e9f33f0
      Lennert Buytenhek 提交于
      On 8366, bit 6 in the rx descriptor rate field indicates whether the
      packet was received on a 20MHz or 40MHz channel, and is not part of
      the MCS index.  Handle this properly, which then prevents hitting the
      WARN_ON and being dropped in ieee80211_rx().
      Signed-off-by: NLennert Buytenhek <buytenh@marvell.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      8e9f33f0
    • L
      mwl8k: fix addr4 zeroing and payload overwrite on DMA header creation · ca009301
      Lennert Buytenhek 提交于
      When inserting a DMA header into a packet for transmission,
      mwl8k_add_dma_header() would blindly zero the addr4 field, which
      is not a good idea if the packet being transmitted is actually a
      4-address packet.
      
      Also, if the transmitted packet was a 4-address with QoS packet,
      the memmove() to do the needed header reshuffling would inadvertently
      overwrite the first two bytes of the packet payload with the QoS field.
      
      This fixes both of these issues.
      Signed-off-by: NLennert Buytenhek <buytenh@marvell.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      ca009301
    • L
      mwl8k: prevent corruption of QoS field on receive · 20f09c3d
      Lennert Buytenhek 提交于
      Packets exchanged between the mwl8k driver and the firmware always
      have a 4-address header without QoS field.  For QoS packets, the QoS
      field is passed to/from the firmware via the tx/rx descriptors.
      
      We were handling this correctly on transmit, but not on receive -- if
      a QoS packet was received, we would leave garbage in the QoS field in
      the packet passed up to the stack, which is Bad(tm).
      
      Also, if the packet received on the air was a 4-address without QoS
      packet, we would forget to skb_pull the 2-byte DMA length prefix off.
      
      This patch adds an argument to the ->rxd_process() receive descriptor
      operation to retrieve the QoS field from the receive descriptor, and
      extends mwl8k_remove_dma_header() to insert this field back into the
      packet if the packet received is a QoS packet.  It also fixes
      mwl8k_remove_dma_header() to strip off the length prefix in all cases.
      Signed-off-by: NLennert Buytenhek <buytenh@marvell.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      20f09c3d
    • L
      mwl8k: fix UPDATE_STADB command struct legacy_rates array length · 140eb5e2
      Lennert Buytenhek 提交于
      There exist 12 802.11b/g rates, but mwl8k supports two additional
      (non-standard) rates, and includes those rates in rate bitmasks and
      in its internal rate table that hardware rate indices index.
      
      Commit "mwl8k: report rate and other information for received frames"
      added one of the nonstandard rates to the mwl8k_rates table to make
      the OFDM rates in the table line up with the rate indices that are
      reported in the receive descriptor (so that we can just simply copy
      the receive descriptor rate index into ieee80211_rx_status::rate_idx)
      and bumped MWL8K_IEEE_LEGACY_DATA_RATES from 12 to 13, but this
      screwed up the UPDATE_STADB command struct layout, as it also uses
      that define, for its legacy_rates array.
      
      To avoid having to convert rate indices and legacy rate bitmaps (e.g.
      ieee80211_bss_conf::basic_rates) between the 12-rate mac80211 format
      and the 14-rate mwl8k format, we'll report all 14 rates in our wiphy's
      band, but filter out the nonstandard ones e.g. in the case of the
      UPDATE_STADB command which only accepts 12 rates.
      
      In the commands that accept 14 rates (SET_AID, SET_RATE), replace the
      use of the MWL8K_RATE_INDEX_MAX_ARRAY define in the command struct by
      the constant 14, to make it clearer that these commands accept 14 rates.
      Signed-off-by: NLennert Buytenhek <buytenh@marvell.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      140eb5e2
    • L
      mwl8k: fix MCS bitmap size in SET_RATE command · 0b5351a8
      Lennert Buytenhek 提交于
      The MCS bitmaps in the SET_RATE command structure were of the wrong
      size, due to use of the wrong define for the array length.  Just
      hardcode the lengths as 16, and do the same for the MCS bitmaps in
      other command structures.
      Signed-off-by: NLennert Buytenhek <buytenh@marvell.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      0b5351a8
  2. 19 11月, 2009 1 次提交
  3. 12 11月, 2009 1 次提交
  4. 07 11月, 2009 15 次提交
  5. 05 11月, 2009 14 次提交
  6. 29 8月, 2009 4 次提交