1. 22 Mar, 2020 3 commits
    • Shannon Nelson's avatar
      ionic: leave dev cmd request contents alone on FW timeout · 2530ba5a
      Shannon Nelson authored
      It is possible (but unlikely) that FW was busy and missed a heartbeat
      check but is still alive and will process the pending request, so don't
      clean the dev_cmd in this case.  This occasionally occurs when working
      with a card that is supporting many devices and is trying to shut them
      all down at once, but still wants to see that last LIF disable request.
      
      Fixes: 97ca4865 ("ionic: add heartbeat check")
      Signed-off-by: default avatarShannon Nelson <snelson@pensando.io>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      2530ba5a
    • Shannon Nelson's avatar
      ionic: add timeout error checking for queue disable · 4ee7bda4
      Shannon Nelson authored
      Short circuit the cleanup if we get a timeout error from
      ionic_qcq_disable() so as to not have to wait too long
      on shutdown when we already know the FW is not responding.
      
      Fixes: 0f3154e6 ("ionic: Add Tx and Rx handling")
      Signed-off-by: default avatarShannon Nelson <snelson@pensando.io>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      4ee7bda4
    • Alex Elder's avatar
      soc: qcom: ipa: kill IPA_RX_BUFFER_ORDER · 6fcd4224
      Alex Elder authored
      Don't assume the receive buffer size is a power-of-2 number of pages.
      Instead, define the receive buffer size independently, and then
      compute the page order from that size when needed.
      
      This fixes a build problem that arises when the ARM64_PAGE_SHIFT
      config option is set to have a page size greater than 4KB.  The
      problem was identified by Linux Kernel Functional Testing.
      
      The IPA code basically assumed the page size to be 4KB.  A larger page
      size caused the receive buffer size to become correspondingly larger
      (32KB or 128KB for ARM64_16K_PAGES and ARM64_64K_PAGES, respectively).
      The receive buffer size is used to compute an "aggregation byte limit"
      value that gets programmed into the hardware, and the large page sizes
      caused that limit value to be too big to fit in a 5 bit field.  This
      triggered a BUILD_BUG_ON() call in ipa_endpoint_validate_build().
      
      This fix causes a lot of receive buffer memory to be wasted if
      system is configured for page size greater than 4KB.  But such a
      misguided configuration will now build successfully.
      Reported-by: default avatarNaresh Kamboju <naresh.kamboju@linaro.org>
      Signed-off-by: default avatarAlex Elder <elder@linaro.org>
      Reviewed-by: default avatarBjorn Andersson <bjorn.andersson@linaro.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      6fcd4224
  2. 20 Mar, 2020 37 commits