1. 13 Jun, 2022 8 commits
    • Yinjun Zhang's avatar
      nfp: support 48-bit DMA addressing for NFP3800 · 5f30671d
      Yinjun Zhang authored
      48-bit DMA addressing is supported in NFP3800 HW and implemented
      in NFDK firmware, so enable this feature in driver now. Note that
      with this change, NFD3 firmware, which doesn't implement 48-bit
      DMA, cannot be used for NFP3800 any more.
      
      RX free list descriptor, used by both NFD3 and NFDK, is also modified
      to support 48-bit DMA. That's OK because the top bits is always get
      set to 0 when assigned with 40-bit address.
      
      Based on initial work of Jakub Kicinski <jakub.kicinski@netronome.com>.
      Signed-off-by: default avatarYinjun Zhang <yinjun.zhang@corigine.com>
      Signed-off-by: default avatarSimon Horman <simon.horman@corigine.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      5f30671d
    • David S. Miller's avatar
      Merge branch 'ipa-refactoring' · 11a1585f
      David S. Miller authored
      Alex Elder says:
      
      ====================
      net: ipa: simple refactoring
      
      This series contains some minor code improvements.
      
      The first patch verifies that the configuration is compatible with a
      recently-defined limit.  The second and third rename two fields so
      they better reflect their use in the code.  The next gets rid of an
      empty function by reworking its only caller.
      
      The last two begin to remove the assumption that an event ring is
      associated with a single channel.  Eventually we'll support having
      multiple channels share an event ring but some more needs to be done
      before that can happen.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      11a1585f
    • Alex Elder's avatar
      net: ipa: derive channel from transaction · bcec9ecb
      Alex Elder authored
      In gsi_channel_tx_queued(), we report when a transaction gets passed
      to hardware.  Change that function so it takes transaction rather
      than a channel as its argument, and derive the channel from the
      transaction.  Rename the function accordingly.
      
      Delete the header comments above the function definition; the ones
      above the declaration in "gsi_private.h" should suffice.  In
      addition, the comments above gsi_channel_tx_update() do a fine job
      of explaining what's going on.
      Signed-off-by: default avatarAlex Elder <elder@linaro.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      bcec9ecb
    • Alex Elder's avatar
      net: ipa: determine channel from event · 7dd9558f
      Alex Elder authored
      Each event in an event ring describes the TRE whose completion
      caused the event.  Currently, every event ring is dedicated to a
      single channel, so the channel is easily derived from the event
      ring.
      
      An event ring can actually be shared by more than one channel
      though, and to distinguish events for one channel from another, the
      event structure contains a field indicating which channel the event
      is associated with.
      
      In gsi_event_trans(), use the channel ID in an event to determine
      which channel the event is for.  This makes the channel pointer now
      passed to that function irrelevant; pass the GSI pointer to that
      function instead.
      
      And although it shouldn't happen, warn if an event arrives that
      records a channel ID that's not in use, or if the event does not
      have a transaction associated with it.
      Signed-off-by: default avatarAlex Elder <elder@linaro.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      7dd9558f
    • Alex Elder's avatar
      net: ipa: simplify endpoint transaction completion · 983a1a30
      Alex Elder authored
      When a GSI transaction completes, ipa_endpoint_trans_complete() is
      eventually called.  That handles TX and RX completions separately,
      but ipa_endpoint_tx_complete() is a no-op.
      
      Instead, have ipa_endpoint_trans_complete() return immediately for a
      TX transaction, and incorporate code from ipa_endpoint_rx_complete()
      to handle RX transactions.
      Signed-off-by: default avatarAlex Elder <elder@linaro.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      983a1a30
    • Alex Elder's avatar
      net: ipa: rename endpoint->trans_tre_max · 317595d2
      Alex Elder authored
      The trans_tre_max field of the IPA endpoint structure is only used
      to limit the number of fragments allowed for an SKB being prepared
      for transmission.  Recognizing that, rename the field skb_frag_max,
      and reduce its value by 1.
      Signed-off-by: default avatarAlex Elder <elder@linaro.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      317595d2
    • Alex Elder's avatar
      net: ipa: rename channel->tlv_count · 88e03057
      Alex Elder authored
      Each GSI channel has a TLV FIFO of a certain size, specified in the
      configuration data for an AP channel.  That size dictates the
      maximum number of TREs that are allowed in a single transaction.
      
      The only way that value is used after initialization is as a limit
      on the number of TREs in a transaction; calling it "tlv_count"
      isn't helpful, and in fact gsi_channel_trans_tre_max() exists to
      sort of abstract it.
      
      Instead, rename the channel->tlv_count field trans_tre_max, and get
      rid of the helper function.  Update a couple of comments as well.
      Signed-off-by: default avatarAlex Elder <elder@linaro.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      88e03057
    • Alex Elder's avatar
      net: ipa: verify command channel TLV count · 92f78f81
      Alex Elder authored
      In commit 8797972a ("net: ipa: remove command info pool"), the
      maximum number of IPA commands that would be sent in a single
      transaction was defined.  That number can't exceed the size of the
      TLV FIFO on the command channel, and we can check that at runtime.
      
      To add this check, pass a new flag to gsi_channel_data_valid() to
      indicate the channel being checked is being used for IPA commands.
      Knowing that we can also verify the channel direction is correct.
      
      Use a new local variable that refers to the command-specific portion
      of the data being checked.
      Signed-off-by: default avatarAlex Elder <elder@linaro.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      92f78f81
  2. 11 Jun, 2022 3 commits
  3. 10 Jun, 2022 29 commits