]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
scsi: fcoe: Remove fcoe_select_cpu()
authorHannes Reinecke <hare@kernel.org>
Thu, 5 Jun 2025 06:20:14 +0000 (08:20 +0200)
committerMartin K. Petersen <martin.petersen@oracle.com>
Tue, 10 Jun 2025 01:30:14 +0000 (21:30 -0400)
The function fcoe_select_cpu() is just used to distribute incoming skbs
which start a new FC command sequence. But the network stack already
received (and processed) that skb, and there is a _really_ good chance
that all subsequent skbs for this sequence will be handled with the same
CPU. So we should just use the CPU on which this skb was allocated on and
save ourselves some overhead due to pointless scheduling.

Signed-off-by: Hannes Reinecke <hare@kernel.org>
Link: https://lore.kernel.org/r/20250605062014.105302-1-hare@kernel.org
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/fcoe/fcoe.c

index b911fdb387f392ff088a69c522a59bbf3ca73454..4912087de10d1d0379d6a6f6cb62b8148e99ece2 100644 (file)
@@ -1299,26 +1299,6 @@ static void fcoe_thread_cleanup_local(unsigned int cpu)
        flush_work(&p->work);
 }
 
-/**
- * fcoe_select_cpu() - Selects CPU to handle post-processing of incoming
- *                     command.
- *
- * This routine selects next CPU based on cpumask to distribute
- * incoming requests in round robin.
- *
- * Returns: int CPU number
- */
-static inline unsigned int fcoe_select_cpu(void)
-{
-       static unsigned int selected_cpu;
-
-       selected_cpu = cpumask_next(selected_cpu, cpu_online_mask);
-       if (selected_cpu >= nr_cpu_ids)
-               selected_cpu = cpumask_first(cpu_online_mask);
-
-       return selected_cpu;
-}
-
 /**
  * fcoe_rcv() - Receive packets from a net device
  * @skb:    The received packet
@@ -1405,7 +1385,7 @@ static int fcoe_rcv(struct sk_buff *skb, struct net_device *netdev,
                cpu = ntohs(fh->fh_ox_id) & fc_cpu_mask;
        else {
                if (ntohs(fh->fh_rx_id) == FC_XID_UNKNOWN)
-                       cpu = fcoe_select_cpu();
+                       cpu = skb->alloc_cpu;
                else
                        cpu = ntohs(fh->fh_rx_id) & fc_cpu_mask;
        }