1. 20 12月, 2019 1 次提交
    • A
      wil6210: support set_multicast_to_unicast cfg80211 operation · 5e5f069c
      Ahmad Masri 提交于
      Wil6210 AP has a separate ring for transmitting multicast packets,
      multicast packets are transmitted without an ack from the receiver side.
      Therefore, 802.11 spec defines some low MCS rates for multicat packets.
      However, there is no guarantee that these packets were really received
      and handled on the client side.
      
      Some applications that rely on multicast packets, may prefer to
      transmit these packets as a unicast to ensure reliability, and also
      to ensure better performance with high MCS rates.
      multicast to unicast is done by duplicating multicast packets to all
      clients and changing the DA (multicast) to the MAC address of the
      client.
      see NL80211_CMD_SET_MULTICAST_TO_UNICAST for more info.
      Signed-off-by: NAhmad Masri <amasri@codeaurora.org>
      Signed-off-by: NMaya Erez <merez@codeaurora.org>
      Signed-off-by: NKalle Valo <kvalo@codeaurora.org>
      5e5f069c
  2. 31 10月, 2019 1 次提交
  3. 25 9月, 2019 1 次提交
  4. 12 9月, 2019 2 次提交
  5. 23 7月, 2019 1 次提交
  6. 28 6月, 2019 1 次提交
  7. 03 5月, 2019 2 次提交
  8. 29 4月, 2019 1 次提交
  9. 28 2月, 2019 4 次提交
  10. 07 11月, 2018 3 次提交
  11. 28 8月, 2018 3 次提交
  12. 31 7月, 2018 4 次提交
  13. 02 7月, 2018 4 次提交
    • G
      wil6210: add support for enhanced DMA RX data flows · 7be13fc3
      Gidon Studinski 提交于
      Enhanced DMA RX data path is handled using a single
      RX descriptor ring for all VIFs.
      Multiple RX status rings are supported, to allow RSS
      and multi MSI support.
      The driver gets the RX completions via the RX status rings.
      The RX status message includes the completed RX buffer ID,
      which points to the allocated SKB.
      
      The enhanced DMA RX data flow supports RX chaining, where
      multiple SKBs are merged into a single packet.
      
      Enhanced DMA HW supports RX HW reorder offload, enabled by
      default for Talyn-MB.
      
      amsdu_en debugfs entry was added to allow control MSDU aggregation.
      Use the following command to disable AMSDU (enabled by default):
      echo 0 > amsdu_en
      Signed-off-by: NGidon Studinski <gidons@codeaurora.org>
      Signed-off-by: NMaya Erez <merez@codeaurora.org>
      Signed-off-by: NKalle Valo <kvalo@codeaurora.org>
      7be13fc3
    • M
      wil6210: add support for enhanced DMA TX data flows · 9202d7b6
      Maya Erez 提交于
      The enhanced DMA TX data path is handled using a descriptor
      ring per connection and a single status ring.
      
      The driver gets TX completions via the TX status ring. Each
      status message points to the completed descriptor ring and
      includes the number of completed descriptors in this ring.
      
      Non TSO enhanced DMA TX descriptors are similar to legacy DMA
      TX descriptors, hence the same transmit function can be used.
      
      However, enhanced DMA TSO frames division is performed by the
      HW, hence a new function is added to handle enhanced DMA TSO.
      Signed-off-by: NGidon Studinski <gidons@codeaurora.org>
      Signed-off-by: NMaya Erez <merez@codeaurora.org>
      Signed-off-by: NKalle Valo <kvalo@codeaurora.org>
      9202d7b6
    • G
      wil6210: initialize TX and RX enhanced DMA rings · 96c93589
      Gidon Studinski 提交于
      Enhanced DMA design includes the following rings:
      - Single RX descriptor ring is used for all VIFs
      - Multiple RX status rings are supported, to allow RSS
      - TX descriptor ring is allocated per connection
      - A single TX status ring is used for all TX descriptor rings
      
      This patch initializes and frees the above descriptor and
      status rings.
      
      The RX SKBs are handled by a new entity of RX buffers manager,
      which handles RX buffers, each one points to an allocated SKB.
      During Rx completion processing, the driver extracts a buffer
      ID which is used as an index to the buffers array.
      After the SKB is freed the buffer is moved from the 'active'
      list to the 'free' list, indicating it can be used for another
      descriptor. During Rx refill, SKBs are allocated and attached
      to 'free' buffers. Those buffers are attached to new descriptors
      and moved to the 'active' list.
      
      New debugfs entries were added to allow edma configuration:
      
      Run the following command to configure the number of status rings:
      echo NUM_OF_STATUS_RINGS > num_rx_status_rings
      
      Run the following command to use extended RX status message for
      additional debug fields from HW:
      echo 0 > compressed_rx_status
      
      Run the following command to control the size of the TX status ring:
      echo TX_STATUS_RING_ORDER > tx_status_ring_order
      The status ring size will be 1 << tx_status_ring_order
      
      Run the following command to control the size of the RX status ring:
      echo RX_STATUS_RING_ORDER > rx_status_ring_order
      Due to HW constrains RX sring order should be bigger than RX ring order
      The status ring size will be 1 << rx_status_ring_order
      
      Run the following command to change the number of RX buffer IDs:
      echo RX_BUFF_ID_COUNT > rx_buff_id_count
      Signed-off-by: NGidon Studinski <gidons@codeaurora.org>
      Signed-off-by: NMaya Erez <merez@codeaurora.org>
      Signed-off-by: NKalle Valo <kvalo@codeaurora.org>
      96c93589
    • G
      wil6210: add support for enhanced DMA structures · 10590c6a
      Gidon Studinski 提交于
      In enhanced DMA the vrings are handled internally by the FW
      and are not exposed to the driver.
      Instead, the driver handles descriptor rings, which are mapped
      by the FW to vrings.
      The completions of the TX and RX descriptors are notified to
      the driver using status rings. Each status ring descriptor
      includes information of the completed descriptors and the ring id
      of their descriptor ring.
      
      This patch changes struct vring to generic wil_ring to allow
      its reuse for enhanced DMA descriptor rings and adds the descriptor
      and status rings specific descriptors.
      
      The vring debugfs entries have changed as follows:
      - dbg_vring_index has changed to dbg_ring_index
      - vrings has changed to rings
      - vring_idle_trsh has changed to ring_idle_trsh
      - vring_index has changed to ring_index
      Signed-off-by: NGidon Studinski <gidons@codeaurora.org>
      Signed-off-by: NMaya Erez <merez@codeaurora.org>
      Signed-off-by: NKalle Valo <kvalo@codeaurora.org>
      10590c6a
  14. 12 5月, 2018 2 次提交
  15. 28 2月, 2018 2 次提交
    • L
      wil6210: multiple VIFs support for connections and data path · 5bd60982
      Lior David 提交于
      Track the connection status per-VIF.
      The data path code is also updated to support multiple VIFs.
      This includes RX and TX VRING management, NAPI poll loops,
      RX reordering and related code.
      Power management code used to check if the main interface
      is up or based on connection state of the main interface,
      adapt this code to take all VIFs into account.
      Signed-off-by: NLior David <liord@codeaurora.org>
      Signed-off-by: NMaya Erez <merez@codeaurora.org>
      Signed-off-by: NKalle Valo <kvalo@codeaurora.org>
      5bd60982
    • L
      wil6210: infrastructure for multiple virtual interfaces · e00243fa
      Lior David 提交于
      Simple infrastructure changes for supporting multiple
      virtual interfaces (multiple VIFs).
      It is still not possible to add new VIFs so the only VIF
      belongs to the main interface.
      Main changes:
      1. Add MAC ID(mid) argument to wmi_send and wmi_call to
      allow invoking WMI commands on different VIFs.
      2. Similarly, in WMI event handler look at the mid reported
      by FW and extract VIF structure (currently only for main
      interface). All WMI event handlers operate on wil6210_vif
      structure so they know on which VIF they were called.
      3. Trivial changes to use wil6210_vif structure and MID
      throughout the code.
      4. Various changes to logging to report MID.
      
      More complete multiple VIFs support will be added gradually
      in next patches.
      Signed-off-by: NLior David <liord@codeaurora.org>
      Signed-off-by: NMaya Erez <merez@codeaurora.org>
      Signed-off-by: NKalle Valo <kvalo@codeaurora.org>
      e00243fa
  16. 09 1月, 2018 2 次提交
  17. 09 8月, 2017 1 次提交
  18. 21 6月, 2017 1 次提交
  19. 16 6月, 2017 1 次提交
    • J
      networking: make skb_push & __skb_push return void pointers · d58ff351
      Johannes Berg 提交于
      It seems like a historic accident that these return unsigned char *,
      and in many places that means casts are required, more often than not.
      
      Make these functions return void * and remove all the casts across
      the tree, adding a (u8 *) cast only where the unsigned char pointer
      was used directly, all done with the following spatch:
      
          @@
          expression SKB, LEN;
          typedef u8;
          identifier fn = { skb_push, __skb_push, skb_push_rcsum };
          @@
          - *(fn(SKB, LEN))
          + *(u8 *)fn(SKB, LEN)
      
          @@
          expression E, SKB, LEN;
          identifier fn = { skb_push, __skb_push, skb_push_rcsum };
          type T;
          @@
          - E = ((T *)(fn(SKB, LEN)))
          + E = fn(SKB, LEN)
      
          @@
          expression SKB, LEN;
          identifier fn = { skb_push, __skb_push, skb_push_rcsum };
          @@
          - fn(SKB, LEN)[0]
          + *(u8 *)fn(SKB, LEN)
      
      Note that the last part there converts from push(...)[0] to the
      more idiomatic *(u8 *)push(...).
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      d58ff351
  20. 13 4月, 2017 1 次提交
    • L
      wil6210: support 8KB RX buffers · 52a45702
      Lior David 提交于
      The 11ad spec requires 11ad devices to be able to receive 8KB
      packets over the air. Currently this is only possible by
      loading the driver with mtu_max=7912 but this also forces
      a smaller block ACK window size which reduces performance
      for stations which transmit normal sized packets (<2KB).
      Fix this problem as follows:
      1. Add a module parameter rx_large_buf that when set,
      will allocate 8KB RX buffers regardless of mtu_max
      setting.
      2. When receiving block ACK request agree to any window
      size not above our maximum, regardless of the mtu_max setting.
      This means if the other side transmits small packets (2KB)
      it can still set up block ACK with a large window size,
      and get better performance.
      Signed-off-by: NLior David <qca_liord@qca.qualcomm.com>
      Signed-off-by: NMaya Erez <qca_merez@qca.qualcomm.com>
      Signed-off-by: NKalle Valo <kvalo@qca.qualcomm.com>
      52a45702
  21. 09 3月, 2017 1 次提交
  22. 28 1月, 2017 1 次提交