1. 02 7月, 2018 5 次提交
    • M
      wil6210: remove crash dump collection from OTP section · 9a53d0b6
      Maya Erez 提交于
      In some cases where the device is stuck, reading from OTP
      can timeout. As OTP section is known there is no need to read
      it during device crash dump collection.
      Adding a new field to struct fw_map to indicate if to include
      this section in crash dump collection.
      Signed-off-by: NMaya Erez <merez@codeaurora.org>
      Signed-off-by: NKalle Valo <kvalo@codeaurora.org>
      9a53d0b6
    • 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
    • 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
    • M
      wil6210: add support for Talyn-MB (Talyn ver 2.0) device · 485790d0
      Maya Erez 提交于
      Add changes to support initialization of Talyn-MB wil6210
      device:
      - Add definition for Talyn-MB new JTAG id
      - Define talyn_mb_fw_mapping array
      - Add Talyn-MB reset sequence
      Signed-off-by: NMaya Erez <merez@codeaurora.org>
      Signed-off-by: NKalle Valo <kvalo@codeaurora.org>
      485790d0
  2. 12 5月, 2018 5 次提交
  3. 28 2月, 2018 5 次提交
  4. 25 1月, 2018 3 次提交
  5. 09 1月, 2018 3 次提交
  6. 02 12月, 2017 5 次提交
  7. 09 8月, 2017 2 次提交
  8. 21 6月, 2017 1 次提交
  9. 16 6月, 2017 2 次提交
    • J
      networking: make skb_put & friends return void pointers · 4df864c1
      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 (skb_put, __skb_put and pskb_put) 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_put, __skb_put };
          @@
          - *(fn(SKB, LEN))
          + *(u8 *)fn(SKB, LEN)
      
          @@
          expression E, SKB, LEN;
          identifier fn = { skb_put, __skb_put };
          type T;
          @@
          - E = ((T *)(fn(SKB, LEN)))
          + E = fn(SKB, LEN)
      
      which actually doesn't cover pskb_put since there are only three
      users overall.
      
      A handful of stragglers were converted manually, notably a macro in
      drivers/isdn/i4l/isdn_bsdcomp.c and, oddly enough, one of the many
      instances in net/bluetooth/hci_sock.c. In the former file, I also
      had to fix one whitespace problem spatch introduced.
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      4df864c1
    • J
      networking: introduce and use skb_put_data() · 59ae1d12
      Johannes Berg 提交于
      A common pattern with skb_put() is to just want to memcpy()
      some data into the new space, introduce skb_put_data() for
      this.
      
      An spatch similar to the one for skb_put_zero() converts many
      of the places using it:
      
          @@
          identifier p, p2;
          expression len, skb, data;
          type t, t2;
          @@
          (
          -p = skb_put(skb, len);
          +p = skb_put_data(skb, data, len);
          |
          -p = (t)skb_put(skb, len);
          +p = skb_put_data(skb, data, len);
          )
          (
          p2 = (t2)p;
          -memcpy(p2, data, len);
          |
          -memcpy(p, data, len);
          )
      
          @@
          type t, t2;
          identifier p, p2;
          expression skb, data;
          @@
          t *p;
          ...
          (
          -p = skb_put(skb, sizeof(t));
          +p = skb_put_data(skb, data, sizeof(t));
          |
          -p = (t *)skb_put(skb, sizeof(t));
          +p = skb_put_data(skb, data, sizeof(t));
          )
          (
          p2 = (t2)p;
          -memcpy(p2, data, sizeof(*p));
          |
          -memcpy(p, data, sizeof(*p));
          )
      
          @@
          expression skb, len, data;
          @@
          -memcpy(skb_put(skb, len), data, len);
          +skb_put_data(skb, data, len);
      
      (again, manually post-processed to retain some comments)
      Reviewed-by: NStephen Hemminger <stephen@networkplumber.org>
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      59ae1d12
  10. 23 5月, 2017 1 次提交
  11. 13 4月, 2017 2 次提交
  12. 09 3月, 2017 4 次提交
  13. 28 1月, 2017 2 次提交