]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
rxrpc: Fix injection of packet loss
authorDavid Howells <dhowells@redhat.com>
Wed, 4 Dec 2024 07:46:42 +0000 (07:46 +0000)
committerJakub Kicinski <kuba@kernel.org>
Mon, 9 Dec 2024 21:48:26 +0000 (13:48 -0800)
Fix the code that injects packet loss for testing to make sure
call->tx_transmitted is updated.

Signed-off-by: David Howells <dhowells@redhat.com>
cc: Marc Dionne <marc.dionne@auristor.com>
cc: linux-afs@lists.infradead.org
Link: https://patch.msgid.link/20241204074710.990092-15-dhowells@redhat.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/rxrpc/output.c

index aededdd474d71a55d2ec41fadab7438c250bfbce..ca0da5e5d27846e5c082f596f75d78cd3beda198 100644 (file)
@@ -544,16 +544,6 @@ static int rxrpc_send_data_packet(struct rxrpc_call *call, struct rxrpc_txbuf *t
 
        len = rxrpc_prepare_data_packet(call, txb, n);
 
-       if (IS_ENABLED(CONFIG_AF_RXRPC_INJECT_LOSS)) {
-               static int lose;
-               if ((lose++ & 7) == 7) {
-                       ret = 0;
-                       trace_rxrpc_tx_data(call, txb->seq, txb->serial,
-                                           txb->flags, true);
-                       goto done;
-               }
-       }
-
        iov_iter_kvec(&msg.msg_iter, WRITE, call->local->kvec, n, len);
 
        msg.msg_name    = &call->peer->srx.transport;
@@ -579,6 +569,17 @@ static int rxrpc_send_data_packet(struct rxrpc_call *call, struct rxrpc_txbuf *t
                frag = rxrpc_tx_point_call_data_nofrag;
        }
 
+       if (IS_ENABLED(CONFIG_AF_RXRPC_INJECT_LOSS)) {
+               static int lose;
+
+               if ((lose++ & 7) == 7) {
+                       ret = 0;
+                       trace_rxrpc_tx_data(call, txb->seq, txb->serial,
+                                           txb->flags, true);
+                       goto done;
+               }
+       }
+
 retry:
        /* send the packet by UDP
         * - returns -EMSGSIZE if UDP would have to fragment the packet