rxrpc: Remove local->defrag_sem
authorDavid Howells <dhowells@redhat.com>
Mon, 17 Oct 2022 21:52:06 +0000 (22:52 +0100)
committerDavid Howells <dhowells@redhat.com>
Tue, 31 Jan 2023 16:38:35 +0000 (16:38 +0000)
We no longer need local->defrag_sem as all DATA packet transmission is now
done from one thread, so remove it.

Signed-off-by: David Howells <dhowells@redhat.com>
cc: Marc Dionne <marc.dionne@auristor.com>
cc: linux-afs@lists.infradead.org

net/rxrpc/ar-internal.h
net/rxrpc/local_object.c
net/rxrpc/output.c

index 2b1d0d3..9e19688 100644 (file)
@@ -284,7 +284,6 @@ struct rxrpc_local {
        struct task_struct      *io_thread;
        struct completion       io_thread_ready; /* Indication that the I/O thread started */
        struct rxrpc_sock       *service;       /* Service(s) listening on this endpoint */
-       struct rw_semaphore     defrag_sem;     /* control re-enablement of IP DF bit */
 #ifdef CONFIG_AF_RXRPC_INJECT_RX_DELAY
        struct sk_buff_head     rx_delay_queue; /* Delay injection queue */
 #endif
index 07d83a4..7d910ae 100644 (file)
@@ -108,7 +108,6 @@ static struct rxrpc_local *rxrpc_alloc_local(struct net *net,
                local->net = net;
                local->rxnet = rxrpc_net(net);
                INIT_HLIST_NODE(&local->link);
-               init_rwsem(&local->defrag_sem);
                init_completion(&local->io_thread_ready);
 #ifdef CONFIG_AF_RXRPC_INJECT_RX_DELAY
                skb_queue_head_init(&local->rx_delay_queue);
index c69c314..6b20222 100644 (file)
@@ -409,8 +409,6 @@ dont_set_request_ack:
        if (txb->len >= call->peer->maxdata)
                goto send_fragmentable;
 
-       down_read(&conn->local->defrag_sem);
-
        txb->last_sent = ktime_get_real();
        if (txb->wire.flags & RXRPC_REQUEST_ACK)
                rtt_slot = rxrpc_begin_rtt_probe(call, serial, rxrpc_rtt_tx_data);
@@ -425,7 +423,6 @@ dont_set_request_ack:
        ret = do_udp_sendmsg(conn->local->socket, &msg, len);
        conn->peer->last_tx_at = ktime_get_seconds();
 
-       up_read(&conn->local->defrag_sem);
        if (ret < 0) {
                rxrpc_inc_stat(call->rxnet, stat_tx_data_send_fail);
                rxrpc_cancel_rtt_probe(call, serial, rtt_slot);
@@ -486,8 +483,6 @@ send_fragmentable:
        /* attempt to send this message with fragmentation enabled */
        _debug("send fragment");
 
-       down_write(&conn->local->defrag_sem);
-
        txb->last_sent = ktime_get_real();
        if (txb->wire.flags & RXRPC_REQUEST_ACK)
                rtt_slot = rxrpc_begin_rtt_probe(call, serial, rxrpc_rtt_tx_data);
@@ -519,8 +514,6 @@ send_fragmentable:
                                      rxrpc_tx_point_call_data_frag);
        }
        rxrpc_tx_backoff(call, ret);
-
-       up_write(&conn->local->defrag_sem);
        goto done;
 }