Skip to content
  1. Nov 07, 2022
  2. Nov 05, 2022
  3. Nov 04, 2022
    • 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