1. 05 Mar, 2024 5 commits
    • 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 33 commits
  4. 28 Feb, 2024 1 commit
    • Jakub Kicinski's avatar
      Merge branch 'tools-ynl-stop-using-libmnl' · a68c0320
      Jakub Kicinski authored
      Jakub Kicinski says:
      
      ====================
      tools: ynl: stop using libmnl
      
      There is no strong reason to stop using libmnl in ynl but there
      are a few small ones which add up.
      
      First (as I remembered immediately after hitting send on v1),
      C++ compilers do not like the libmnl for_each macros.
      I haven't tried it myself, but having all the code directly
      in YNL makes it easier for folks porting to C++ to modify them
      and/or make YNL more C++ friendly.
      
      Second, we do much more advanced netlink level parsing in ynl
      than libmnl so it's hard to say that libmnl abstracts much from us.
      The fact that this series, removing the libmnl dependency, only
      adds <300 LoC shows that code savings aren't huge.
      OTOH when new types are added (e.g. auto-int) we need to add
      compatibility to deal with older version of libmnl (in fact,
      even tho patches have been sent months ago, auto-ints are still
      not supported in libmnl.git).
      
      Thrid, the dependency makes ynl less self contained, and harder
      to vendor in. Whether vendoring libraries into projects is a good
      idea is a separate discussion, nonetheless, people want to do it.
      
      Fourth, there are small annoyances with the libmnl APIs which
      are hard to fix in backward-compatible ways. See the last patch
      for example.
      
      All in all, libmnl is a great library, but with all the code
      generation and structured parsing, ynl is better served by going
      its own way.
      
      v1: https://lore.kernel.org/all/20240222235614.180876-1-kuba@kernel.org/
      ====================
      
      Link: https://lore.kernel.org/r/20240227223032.1835527-1-kuba@kernel.orgSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      a68c0320