1. 05 Mar, 2024 8 commits
    • David Howells's avatar
      rxrpc: Extract useful fields from a received ACK to skb priv data · 4b68137a
      David Howells authored
      Extract useful fields from a received ACK packet into the skb private data
      early on in the process of parsing incoming packets.  This makes the ACK
      fields available even before we've matched the ACK up to a call and will
      allow us to deal with path MTU discovery probe responses even after the
      relevant call has been completed.
      Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
      cc: Marc Dionne <marc.dionne@auristor.com>
      cc: "David S. Miller" <davem@davemloft.net>
      cc: Eric Dumazet <edumazet@google.com>
      cc: Jakub Kicinski <kuba@kernel.org>
      cc: Paolo Abeni <pabeni@redhat.com>
      cc: linux-afs@lists.infradead.org
      cc: netdev@vger.kernel.org
      4b68137a
    • David Howells's avatar
      rxrpc: Clean up the resend algorithm · 37473e41
      David Howells authored
      Clean up the DATA packet resending algorithm to retransmit packets as we
      come across them whilst walking the transmission buffer rather than queuing
      them for retransmission at the end.  This can be done as ACK parsing - and
      thus the discarding of successful packets - is now done in the same thread
      rather than separately in softirq context and a locked section is no longer
      required.
      Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
      cc: Marc Dionne <marc.dionne@auristor.com>
      cc: "David S. Miller" <davem@davemloft.net>
      cc: Eric Dumazet <edumazet@google.com>
      cc: Jakub Kicinski <kuba@kernel.org>
      cc: Paolo Abeni <pabeni@redhat.com>
      cc: linux-afs@lists.infradead.org
      cc: netdev@vger.kernel.org
      37473e41
    • David Howells's avatar
      rxrpc: Record probes after transmission and reduce number of time-gets · 4d267ad6
      David Howells authored
      Move the recording of a successfully transmitted DATA or ACK packet that
      will provide RTT probing to after the transmission.  With the I/O thread
      model, this can be done because parsing of the responding ACK can no longer
      race with the post-transmission code.
      
      Move the various timeout-settings done after successfully transmitting a
      DATA packet into rxrpc_tstamp_data_packets() and eliminate a number of
      calls to get the current time.
      
      As a consequence we no longer need to cancel a proposed RTT probe on
      transmission failure.
      Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
      cc: Marc Dionne <marc.dionne@auristor.com>
      cc: "David S. Miller" <davem@davemloft.net>
      cc: Eric Dumazet <edumazet@google.com>
      cc: Jakub Kicinski <kuba@kernel.org>
      cc: Paolo Abeni <pabeni@redhat.com>
      cc: linux-afs@lists.infradead.org
      cc: netdev@vger.kernel.org
      4d267ad6
    • David Howells's avatar
      rxrpc: Use ktimes for call timeout tracking and set the timer lazily · 153f90a0
      David Howells authored
      Track the call timeouts as ktimes rather than jiffies as the latter's
      granularity is too high and only set the timer at the end of the event
      handling function.
      Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
      cc: Marc Dionne <marc.dionne@auristor.com>
      cc: "David S. Miller" <davem@davemloft.net>
      cc: Eric Dumazet <edumazet@google.com>
      cc: Jakub Kicinski <kuba@kernel.org>
      cc: Paolo Abeni <pabeni@redhat.com>
      cc: linux-afs@lists.infradead.org
      cc: netdev@vger.kernel.org
      153f90a0
    • David Howells's avatar
      rxrpc: Differentiate PING ACK transmission traces. · 12a66e77
      David Howells authored
      There are three points that transmit PING ACKs and all of them use the same
      trace string.  Change two of them to use different strings.
      Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
      cc: Marc Dionne <marc.dionne@auristor.com>
      cc: "David S. Miller" <davem@davemloft.net>
      cc: Eric Dumazet <edumazet@google.com>
      cc: Jakub Kicinski <kuba@kernel.org>
      cc: Paolo Abeni <pabeni@redhat.com>
      cc: linux-afs@lists.infradead.org
      cc: netdev@vger.kernel.org
      12a66e77
    • David Howells's avatar
      rxrpc: Don't permit resending after all Tx packets acked · a711d976
      David Howells authored
      Once all the packets transmitted as part of a call have been acked, don't
      permit any resending.
      Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
      cc: Marc Dionne <marc.dionne@auristor.com>
      cc: "David S. Miller" <davem@davemloft.net>
      cc: Eric Dumazet <edumazet@google.com>
      cc: Jakub Kicinski <kuba@kernel.org>
      cc: Paolo Abeni <pabeni@redhat.com>
      cc: linux-afs@lists.infradead.org
      cc: netdev@vger.kernel.org
      a711d976
    • David Howells's avatar
      rxrpc: Parse received packets before dealing with timeouts · 3e0b83ee
      David Howells authored
      Parse the received packets before going and processing timeouts as the
      timeouts may be reset by the reception of a packet.
      Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
      cc: Marc Dionne <marc.dionne@auristor.com>
      cc: "David S. Miller" <davem@davemloft.net>
      cc: Eric Dumazet <edumazet@google.com>
      cc: Jakub Kicinski <kuba@kernel.org>
      cc: Paolo Abeni <pabeni@redhat.com>
      cc: linux-afs@lists.infradead.org
      cc: netdev@vger.kernel.org
      3e0b83ee
    • David Howells's avatar
      rxrpc: Do zerocopy using MSG_SPLICE_PAGES and page frags · 49489bb0
      David Howells authored
      Switch from keeping the transmission buffers in the rxrpc_txbuf struct and
      allocated from the slab, to allocating them using page fragment allocators
      (which uses raw pages), thereby allowing them to be passed to
      MSG_SPLICE_PAGES and avoid copying into the UDP buffers.
      Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
      cc: Marc Dionne <marc.dionne@auristor.com>
      cc: "David S. Miller" <davem@davemloft.net>
      cc: Eric Dumazet <edumazet@google.com>
      cc: Jakub Kicinski <kuba@kernel.org>
      cc: Paolo Abeni <pabeni@redhat.com>
      cc: linux-afs@lists.infradead.org
      cc: netdev@vger.kernel.org
      49489bb0
  2. 03 Mar, 2024 1 commit
    • David Howells's avatar
      rxrpc: Use rxrpc_txbuf::kvec[0] instead of rxrpc_txbuf::wire · 8985f2b0
      David Howells authored
      Use rxrpc_txbuf::kvec[0] instead of rxrpc_txbuf::wire to gain access to the
      Rx protocol header.  In future, the wire header will be stored in a page
      frag, not in the rxrpc_txbuf struct making it possible to use
      MSG_SPLICE_PAGES when sending it.
      
      Similarly, access the ack header as being immediately after the wire header
      when filling out an ACK packet.
      Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
      cc: Marc Dionne <marc.dionne@auristor.com>
      cc: "David S. Miller" <davem@davemloft.net>
      cc: Eric Dumazet <edumazet@google.com>
      cc: Jakub Kicinski <kuba@kernel.org>
      cc: Paolo Abeni <pabeni@redhat.com>
      cc: linux-afs@lists.infradead.org
      cc: netdev@vger.kernel.org
      8985f2b0
  3. 29 Feb, 2024 31 commits