1. 07 Nov, 2022 25 commits
  2. 05 Nov, 2022 9 commits
  3. 04 Nov, 2022 6 commits
    • David S. Miller's avatar
      Merge branch 'net-ipa-more-endpoints' · 95ec6bce
      David S. Miller authored
      Alex Elder says:
      
      ====================
      net: ipa: support more endpoints
      
      This series adds support for more than 32 IPA endpoints.  To do
      this, five registers whose bits represent endpoint state are
      replicated as needed to represent endpoints beyond 32.  For existing
      platforms, the number of endpoints is never greater than 32, so
      there is just one of each register.  IPA v5.0+ supports more than
      that though; these changes prepare the code for that.
      
      Beyond that, the IPA fields that represent endpoints in a 32-bit
      bitmask are updated to support an arbitrary number of these endpoint
      registers.  (There is one exception, explained in patch 7.)
      
      The first two patches are some sort of unrelated cleanups, making
      use of a helper function introduced recently.
      
      The third and fourth use parameterized functions to determine the
      register offset for registers that represent endpoints.
      
      The last five convert fields representing endpoints to allow more
      than 32 endpoints to be represented.
      
      Since v1, I have implemented Jakub's suggestions:
        - Don't print a message on (bitmap) memory allocation failure
        - Do not do "mass null checks" when allocating bitmaps
        - Rework some code to ensure error path is sane
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      95ec6bce
    • Alex Elder's avatar
      net: ipa: use a bitmap for enabled endpoints · 9b7a0065
      Alex Elder authored
      Replace the 32-bit unsigned used to track enabled endpoints with a
      Linux bitmap, to allow an arbitrary number of endpoints to be
      represented.
      Signed-off-by: default avatarAlex Elder <elder@linaro.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      9b7a0065
    • Alex Elder's avatar
      net: ipa: use a bitmap for set-up endpoints · ae5108e9
      Alex Elder authored
      Replace the 32-bit unsigned used to track endpoints that have
      completed setup with a Linux bitmap, to allow an arbitrary number
      of endpoints to be represented.
      
      Rework the error handling in ipa_endpoint_init() so the defined
      endpoint bitmap is freed if an error occurs early.  Once endpoints
      have been initialized, ipa_endpoint_exit() is used to recover if
      the set of filtered endpoints is invalid.
      Signed-off-by: default avatarAlex Elder <elder@linaro.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      ae5108e9
    • Alex Elder's avatar
      net: ipa: support more filtering endpoints · 0f97fbd4
      Alex Elder authored
      Prior to IPA v5.0, there could be no more than 32 endpoints.
      
      A filter table begins with a bitmap indicating which endpoints have
      a filter defined.  That bitmap is currently assumed to fit in a
      32-bit value.
      
      Starting with IPA v5.0, more than 32 endpoints are supported, so
      it's conceivable that a TX endpoint has an ID that exceeds 32.
      Increase the size of the field representing endpoints that support
      filtering to 64 bits.  Rename the bitmap field "filtered".
      
      Unlike other similar fields, we do not use an (arbitrarily long)
      Linux bitmap for this purpose.  The reason is that if a filter table
      ever *did* need to support more than 64 TX endpoints, its format
      would change in ways we can't anticipate.
      
      Have ipa_endpoint_init() return a negative errno rather than a mask
      that indicates which endpoints support filtering, and have that
      function assign the "filtered" field directly.
      Signed-off-by: default avatarAlex Elder <elder@linaro.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      0f97fbd4
    • Alex Elder's avatar
      net: ipa: use a bitmap for available endpoints · 88de7672
      Alex Elder authored
      Similar to the previous patch, replace the 32-bit unsigned used to
      track endpoints supported by hardware with a Linux bitmap, to allow
      an arbitrary number of endpoints to be represented.
      
      Move ipa_endpoint_deconfig() above ipa_endpoint_config() and use
      it in the error path of the latter function.
      Signed-off-by: default avatarAlex Elder <elder@linaro.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      88de7672
    • Alex Elder's avatar
      net: ipa: use a bitmap for defined endpoints · 9a9f5129
      Alex Elder authored
      IPA v5.0 supports more than 32 endpoints, so we will be unable to
      represent endpoints defined in the configuration data with a 32-bit
      value.  To prepare for that, convert the field in the IPA structure
      representing defined endpoints to be a Linux bitmap.
      
      Convert loops based on that field into for_each_set_bit() calls over
      the new bitmap.  Note that the loop in ipa_endpoint_config() still
      assumes there are 32 or fewer endpoints (when comparing against the
      available endpoint bit mask); that assumption goes away in the next
      patch.
      Signed-off-by: default avatarAlex Elder <elder@linaro.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      9a9f5129