)]}'
{
  "commit": "7e4becb97166f83292787c9830ad6f3b02b2829d",
  "tree": "06bdea36439ca40d8c34b1f4c01d8a81031d1f7c",
  "parents": [
    "be64cc44104d54cabc213941a78024215ed0206e"
  ],
  "author": {
    "name": "David Howells",
    "email": "dhowells@redhat.com",
    "time": "Tue Sep 22 21:41:24 2026 +0100"
  },
  "committer": {
    "name": "David Howells",
    "email": "dhowells@redhat.com",
    "time": "Fri Sep 25 19:21:39 2026 +0100"
  },
  "message": "rxrpc: Fix RACK-TLP implementation\n\nFix the RACK-TLP implementation in the following ways:\n\n (1) Move the \"in/exiting Fast or RTO recovery\" flags to the rxrpc_call\n     struct rather than rxrpc_ack_summary so that they persist beyond ACK\n     parsing to the next time rxrpc_congestion_management() happens (when\n     the next ACK is parsed).  This allows those values to be accessed by\n     RACK-TLP when invoked by the Reorder timer expiring.\n\n (2) In rxrpc_input_call_event(), rearm the RTO timer before the function\n     returns if no other timer is running and if DATA packets have been\n     sent but not yet ACK\u0027d.  This prevents us not having a timer set to\n     drive retransmission.\n\n (3) In rxrpc_congestion_management(), initialise the TLP state when\n     entering the FAST_RETRANSMIT congestion control state, not every time\n     we process that state - otherwise TLP doesn\u0027t happen in that state.\n\n (4) Don\u0027t reset segment_xmit_ts in rxrpc_rack_mark_lost() as that\u0027s called\n     from two places, one of which shouldn\u0027t do that.  Instead, do it in\n     rxrpc_rack_detect_loss().\n\n (5) In rxrpc_tlp_calc_pto(), check flight_size is at most one jumbo\n     packet\u0027s worth of subpackets in size, not just any non-zero value\n     (RFC8985 7.2 has a comparison against 1, so this is approximated\n     because we\u0027ll be sending jumbo packets if possible).\n\n (6) In rxrpc_prepare_data_packet(), only increment call-\u003etx_nr_resent if\n     the DATA packet being retransmitted was not previously transmitted\n     otherwise tx_nr_resent will keep getting bigger and cause RACK-TLP to\n     malfunction (the value is used in the in-flight calculation).\n     tx_nr_resent is decremented when a packet that has been retransmitted\n     is discarded - but only by 1 per packet.\n\nFixes: 7c482665931b (\"rxrpc: Implement RACK/TLP to deal with transmission stalls [RFC8985]\")\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nReviewed-by: Marc Dionne \u003cmarc.dionne@auristor.com\u003e\nTested-by: Marc Dionne \u003cmarc.dionne@auristor.com\u003e\nReviewed-by: Jeffrey Altman \u003cjaltman@auristor.com\u003e\ncc: Eric Dumazet \u003cedumazet@google.com\u003e\ncc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\ncc: Jakub Kicinski \u003ckuba@kernel.org\u003e\ncc: Paolo Abeni \u003cpabeni@redhat.com\u003e\ncc: Simon Horman \u003chorms@kernel.org\u003e\ncc: linux-afs@lists.infradead.org\ncc: stable@vger.kernel.org\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "f0c8cbcc5dd5c244218f6faad740351657908ec6",
      "old_mode": 33188,
      "old_path": "net/rxrpc/ar-internal.h",
      "new_id": "9c7b2e0817e75d81cbdb97df1904f37696acb81c",
      "new_mode": 33188,
      "new_path": "net/rxrpc/ar-internal.h"
    },
    {
      "type": "modify",
      "old_id": "21be9c86d7a74fd0500d88a149a81826a2d36b50",
      "old_mode": 33188,
      "old_path": "net/rxrpc/call_event.c",
      "new_id": "07e9aac42163f7377adab91a5643a9b38fd2d2bf",
      "new_mode": 33188,
      "new_path": "net/rxrpc/call_event.c"
    },
    {
      "type": "modify",
      "old_id": "73cafe6bfa9f54765f47c5ab2662f2eef4adb9af",
      "old_mode": 33188,
      "old_path": "net/rxrpc/input.c",
      "new_id": "0e9f6a1e9f00e2915c33432038d11cb7e314218c",
      "new_mode": 33188,
      "new_path": "net/rxrpc/input.c"
    },
    {
      "type": "modify",
      "old_id": "072e1d9ecb2ec46efbd90f1d81e7d0a929ba7d46",
      "old_mode": 33188,
      "old_path": "net/rxrpc/input_rack.c",
      "new_id": "66ef2fc6d3d9b06f33486baf9115337a402af938",
      "new_mode": 33188,
      "new_path": "net/rxrpc/input_rack.c"
    },
    {
      "type": "modify",
      "old_id": "88cad087f13bf9550032e412f40cb1aedb6f8376",
      "old_mode": 33188,
      "old_path": "net/rxrpc/output.c",
      "new_id": "9e082f7403312cc5dceae8cf009ce9cbf1fc2a68",
      "new_mode": 33188,
      "new_path": "net/rxrpc/output.c"
    }
  ]
}
