1. 01 8月, 2017 1 次提交
  2. 21 7月, 2017 1 次提交
  3. 23 6月, 2017 6 次提交
    • E
      iwlwifi: add a W/A for a scheduler hardware bug · dcfbd67b
      Emmanuel Grumbach 提交于
      In case we need to move the scheduler write pointer by
      steps of 0x40, 0x80 or 0xc0, the scheduler gets stuck.
      This leads to hardware error interrupts with status:
      0x5A5A5A5A or alike.
      
      In order to work around this, detect in the transport
      layer that we are going to hit this case and tell iwlmvm
      to increment the sequence number of the packets. This
      allows to keep the requirement that the WiFi sequence
      number is in sync with the index in the scheduler Tx queue
      and it also allows to avoid the problematic sequence.
      This means that from time to time, we will start a queue
      from ssn + 1, but that shouldn't be a problem since we
      don't switch to new queues for AMPDU now that we have
      DQA which allows to keep the same queue while toggling
      the AMPDU state.
      
      This bug has been fixed on 9000 devices and up.
      Signed-off-by: NEmmanuel Grumbach <emmanuel.grumbach@intel.com>
      Signed-off-by: NLuca Coelho <luciano.coelho@intel.com>
      dcfbd67b
    • J
      iwlwifi: pcie: fix command completion name debug · d490e097
      Johannes Berg 提交于
      When the command name is printed on command completion, the wrong
      group is used, leading to the wrong name being printed. Fix this
      by using the group ID without inappropriately mangling it through
      iwl_cmd_groupid() - it's already a u8. Also, while at it, use it
      from the same place as the command ID, everything else is just
      confusing.
      
      Fixes: ab02165c ("iwlwifi: add wide firmware command infrastructure for TX")
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      Signed-off-by: NLuca Coelho <luciano.coelho@intel.com>
      d490e097
    • J
      iwlwifi: fix TX tracing for non-linear SKBs · 8790fce4
      Johannes Berg 提交于
      When sending non-linear SKBs that should be included in the regular
      TX tracing completely (and not be pushed into the tx_data tracing),
      the (tracing) code didn't correctly take the fact that they were
      non-linear into account and added only the skb head portion.
      
      This probably never really triggered, since those frames we want
      traced fully are most likely linear anyway, but the code gets easier
      to understand and we lose an argument to the tracing function, so
      overall fixing this is better.
      
      Fixes: 206eea78 ("iwlwifi: pcie: support frag SKBs")
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      Signed-off-by: NLuca Coelho <luciano.coelho@intel.com>
      8790fce4
    • J
      iwlwifi: simplify data tracepoint · 78c1acf3
      Johannes Berg 提交于
      There's no need to calculate the data_len outside of the tracepoint,
      since it's always skb->len - hdr_len, which are both available inside.
      Simplify the callers and move the calculation in.
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      Signed-off-by: NLuca Coelho <luciano.coelho@intel.com>
      78c1acf3
    • J
      iwlwifi: pcie: don't report RF-kill enabled while shutting down · 326477e4
      Johannes Berg 提交于
      When toggling the RF-kill pin quickly in succession, the driver can
      get rather confused because it might be in the process of shutting
      down, expecting all commands to go through quickly due to rfkill,
      but the transport already thinks the device is accessible again,
      even though it previously shut it down. This leads to bugs, and I
      even observed a kernel panic.
      
      Avoid this by making the PCIe code only report that the radio is
      enabled again after the higher layers actually decided to shut it
      off.
      
      This also pulls out this common RF-kill checking code into a common
      function called by both transport generations and also moves it to
      the direct method - in the internal helper we don't really care
      about the RF-kill status anymore since we won't report it up until
      the stop anyway.
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      Signed-off-by: NLuca Coelho <luciano.coelho@intel.com>
      326477e4
    • J
      iwlwifi: use bitfield.h for some registers · f3779f47
      Johannes Berg 提交于
      Letting the preprocessor/compiler generate the shift/mask by itself
      is a win for readability, so use bitfield.h for some registers.
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      Signed-off-by: NLuca Coelho <luciano.coelho@intel.com>
      f3779f47
  4. 16 6月, 2017 1 次提交
    • 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
  5. 06 6月, 2017 2 次提交
  6. 20 4月, 2017 7 次提交
  7. 11 4月, 2017 5 次提交
  8. 07 2月, 2017 1 次提交
    • J
      iwlwifi: mvm/pcie: adjust A-MSDU tx_cmd length in PCIe · 05e5a7e5
      Johannes Berg 提交于
      Instead of setting the tx_cmd length in the mvm code, which is
      complicated by the fact that DQA may want to temporarily store
      the SKB on the side, adjust the length in the PCIe code which
      also knows about this since it's responsible for duplicating
      all those headers that are account for in this code.
      
      As the PCIe code already relies on the tx_cmd->len field, this
      doesn't really introduce any new dependencies.
      
      To make this possible we need to move the memcpy() of the TX
      command until after it was updated.
      
      This does even simplify the code though, since the PCIe code
      already does a lot of manipulations to build A-MSDUs correctly
      and changing the length becomes a simple operation to see how
      much was added/removed, rather than predicting it.
      
      Fixes: 24afba76 ("iwlwifi: mvm: support bss dynamic alloc/dealloc of queues")
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      Signed-off-by: NLuca Coelho <luciano.coelho@intel.com>
      05e5a7e5
  9. 04 12月, 2016 1 次提交
  10. 19 10月, 2016 1 次提交
  11. 23 9月, 2016 1 次提交
  12. 19 9月, 2016 1 次提交
  13. 16 9月, 2016 5 次提交
  14. 30 8月, 2016 1 次提交
  15. 06 7月, 2016 6 次提交