1. 22 5月, 2008 7 次提交
    • I
      rt2x00: Split rt2x00lib_write_tx_desc() · 7050ec82
      Ivo van Doorn 提交于
      Split rt2x00lib_write_tx_desc() up into a TX descriptor initializor
      and TX descriptor writer.
      
      This split is required to properly allow mac80211 to move its
      tx_control structure into the skb->cb array.
      The rt2x00queue_create_tx_descriptor() function will read all tx control
      information and convert it into a rt2x00 TX descriptor information structure.
      After that function is complete, we have all information we needed from the
      tx control structure and are free to start writing into the skb->cb array
      for our own purposes.
      rt2x00queue_write_tx_descriptor() will be in charge of really sending
      the TX descriptor to the hardware and kicking the TX queue.
      Signed-off-by: NIvo van Doorn <IvDoorn@gmail.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      7050ec82
    • G
      rt2x00: Only initialize the minimum needed fields of PCI TX descriptors. · 4de36fe5
      Gertjan van Wingerde 提交于
      In preparation of replacing the statically allocated data DMA buffers with DMA-mapped
      skb's we need to change the TXD handling of the PCI drivers, by moving the programming
      of the buffer address fields to the actual TXD writing at TX time, instead of at start-up
      time.
      Signed-off-by: NGertjan van Wingerde <gwingerde@kpnplanet.nl>
      Signed-off-by: NIvo van Doorn <IvDoorn@gmail.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      4de36fe5
    • I
      rt2x00: Preserve descriptor information after memmove() · 70a96109
      Ivo van Doorn 提交于
      Due to usage of memmove() in rt2x00usb the descriptor can become
      corrupted because it is being overwritten by the data part.
      Overall having the descriptor in front of the frame is a bad idea,
      we can however use the skb->cb array for this task, since that
      contains more then enough room to hold the entire descriptor and
      preserve the information long enough.
      
      After this we can also cleanup the alignment code a bit to make it
      work a bit more flexible to allow for all kinds of odd header lengths.
      Signed-off-by: NIvo van Doorn <IvDoorn@gmail.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      70a96109
    • G
      rt2x00: Fix queue related oops in case of deselected mac80211 multi-queue feature. · 61448f88
      Gertjan van Wingerde 提交于
      With the integration of the mac80211 multiqueue patches it has become possible that the
      mac80211 layer modifies the number of TX queues that is stored inside the ieee80211_hw
      structure, especially when multi-queue is not selected.
      
      The rt2x00 drivers are not well suited to handle that situation, as they allocate the
      queue structures before mac80211 has modified the number of queues it is going to use,
      and also expect the number of allocated queues to match the hardware implementation.
      
      Hence, ensure that rt2x00 maintains by itself the number of queues that the hardware
      supports, and, at the same time, making is not dependent on the preservation of contents
      inside a mac80211 structure.
      Signed-off-by: NGertjan van Wingerde <gwingerde@kpnplanet.nl>
      Signed-off-by: NIvo van Doorn <IvDoorn@gmail.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      61448f88
    • I
      rt2x00: Remove ieee80211_tx_control argument from write_tx_desc() · 61486e0f
      Ivo van Doorn 提交于
      Move the last remaining information details read from ieee80211_tx_control
      in the drivers to the txentry_desc structure. After this we can
      remove ieee80211_tx_control from the argument list for the callback function,
      which makes it easier when the control information is moved into skb->cb
      Signed-off-by: NIvo van Doorn <IvDoorn@gmail.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      61486e0f
    • I
      rt2x00: Fix TX status reporting · fb55f4d1
      Ivo van Doorn 提交于
      The tx_status enumeration was broken since the introduction
      of rt61pci. That driver uses different values to report the
      status of the tx action.
      This would lead to frames that were reported as success but
      actually failed to be send out, or frames that were neither
      successfull or failure which were reported as failure.
      
      Fix this by change the TX status reporting and more explicitely
      check for failure or success. Note that a third possibility is
      added "unknown". Not all hardware (USB) can report the actual
      TX status, for rt61pci some frames will receive this status
      because the TXdone handler is never called for those frames.
      This unknown will now be handled as neither success or failure,
      so we no longer increment the failure counter while this conclusion
      could not be determined from the real status of the frame.
      Signed-off-by: NIvo van Doorn <IvDoorn@gmail.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      fb55f4d1
    • I
      rt2x00: trim skb_frame_desc to 32 bytes · 5a6e5999
      Ivo van Doorn 提交于
      Remove frame_type from skb_frame_desc and pass it
      as argument to rt2x00debug_dump_frame().
      
      Change data_len and desc_len to unsigned short
      to save another 4 bytes in skb_frame_desc. Note that
      this was the only location where the data_len and
      desc_len was not yet treated as unsigned short.
      
      This trim is required to help mac80211 with adding
      the TX control and TX status informtation into the
      skb->cb structure. When that happens, drivers will
      have approximately 40 bytes left to use freely.
      Signed-off-by: NIvo van Doorn <IvDoorn@gmail.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      5a6e5999
  2. 17 5月, 2008 6 次提交
  3. 15 5月, 2008 27 次提交