From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wm1-f45.google.com (mail-wm1-f45.google.com [209.85.128.45]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id F413A273D8D for ; Wed, 4 Mar 2026 21:35:23 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.45 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772660125; cv=none; b=BepsF7kJsfMa5STYndhT3hRQQPjwR4rxA4cojQcedMHbmJyklxR9ZupexSq9TmZwAyF1xC2vFdTXlJShQLOw4VszyQQYhOilo64vaXEIMITYt/HbEFRyIR+qTXIWCsfP3AaytfdZ4rKSdQU6/jQC5SmGShQhapol/vhepIw51xI= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772660125; c=relaxed/simple; bh=g1jJ7+PvEzLNzCmg0/V/jfiEQVRG1P1r/WLSuAicBDE=; h=Date:From:To:Cc:Subject:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=k/NCn3ulI16Pywi4O4aRh4CABjm7PymWypvsMq1zM0yCbgJjHSeewFkFRD79w9TO6WAiOuB7eLCt1VrHEzPSFic9UoF6kD4FVewFGhQ5WdQ0YDXnCLX9T+Y3aoJqE/nOGgENZ6b/uZM6olrDc8meEHt/2SMJHx0UH9/D33Lm6x8= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=cSGBhxDw; arc=none smtp.client-ip=209.85.128.45 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="cSGBhxDw" Received: by mail-wm1-f45.google.com with SMTP id 5b1f17b1804b1-480706554beso79318185e9.1 for ; Wed, 04 Mar 2026 13:35:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1772660122; x=1773264922; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:subject:cc:to:from:date:from:to:cc:subject:date :message-id:reply-to; bh=oHwh5kWRHiqXFYFXI/fqBKZ24JxWXaGYGlZJiOK+k2g=; b=cSGBhxDwW7q/N/ouGNWX0lERHC53uRTfFbS0vO8HmCGAN20cl17w2aIrcGJTgDx+uH KoCSk1RQLyvHC4HwS6onw4uIGMSv/dWQEEcdsXMI01mLw5JPsYQc+qkTZqQf7MH8Zywe GimnUn/mAvg3sTzAEE0LRsmy6kgVEkpTTG/TAM/l0tRD0ljEg0v8sYfYIqvDTbRXzNpY hs9+Cf/ErNH0nwa6AfHhHJZVF5l0Vl0QeCOZQ9Vpp5E3Lhu+56JB6xt5sLPb+0k5qoXg X1XM8DBj8EpEliml6VW1kfFz5U4oaRkIGYXuOyD6BR12AAPTSuI9XhJArS3GoN+cYP7a KJ+Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772660122; x=1773264922; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=oHwh5kWRHiqXFYFXI/fqBKZ24JxWXaGYGlZJiOK+k2g=; b=CA/mhdTcpVs+6EDgQ2iLt1aLBd0Tt/iUuszXgkp+GtwmgAm5cFiMcvYiobwhIuzUOF RQvzx+6W1wwnfgKha3EzMbRrNVa3horjOMaYCnBEJJbktCnU5im7bL4SL0C+8LmI87NN zx0pMnN1mJtLZSYsZu4+hYQD/R4AA2uqF6O58iuy/r2FpeYqyFtLUKSknXoQiJ6uCfj4 ROtC9DtBZpnKzxNZpVP805ofDFpDn6DcXEZoDldyEZy3lFhY5JZHRZFk8epxMS2Dqh8v qyqX9Ra8qnNTPY4C8ZG6mCY6+p0NkCcd0Kk41irB3jcmm9wZGc1+HyUBFRU8qQOKi9eU hhkA== X-Forwarded-Encrypted: i=1; AJvYcCXD0keV3i58REDLtbequzXA/C09h+GI0+Ryuocg9+YLPE3brZTNGtIeS6l/KyBYk/Maj2uIW2e1/dShD7Q=@vger.kernel.org X-Gm-Message-State: AOJu0YxRUcJ+oN0+B4xnObK9R9ucAmW5bYhgfdRPFqqFEEDtU17mGaJ4 mrkSLgdMS2q24PK+q4AFoPHLwudF4zpQ6yLA97H9Gulo/FRVPD9U+nKz X-Gm-Gg: ATEYQzyM1Uq3dP4zgTZa8Cl4PoQNTjB+AHS1XYK0gpUTrZ3nfrh3GeogNtxSb7fB5hT 2ZhWksppz0rLAtU7X21hjMrkK+zB3L2KdzuoMFAxTNN9Zl2c6RHQ2p1qP/0e6lZnfqwlJ+SQYRN 8LBr2yW0/yZO92qHYpbEHfYqjAdt4msVdfzRa+2aaB94bl6JCyJ+3HeoZ39/zXKzC0o34bO225n pSIqxisLrhyJIWJj9CeA0EgIBI2W3kJ1UL4v+JFECo0lcRxtkUzidXpI3maUhNvhd/tCbatmR0t Q8XAdCAz183daVOruO8i4K7F57b8tQhHlEDCFdsVYwNVNC8w4JkWQwXcg+TgnXNQBUiBHlYOySu mCY59ZUC7T04nN1yYLkrA+zZjq6eZPLYO2I3eQwGpYdMR3aHOG0oJZKvROnAUVrMd08xhIm2bgu 92nIf3DGDYWAApxFS/XC8dIYttLZKmWFWKiFOMDB5qpyBuWKxzPpk/BOF1Xkqwpy92seSElSz3y +k= X-Received: by 2002:a05:600c:828d:b0:483:ad56:8d16 with SMTP id 5b1f17b1804b1-4851983a7fcmr55969805e9.6.1772660122112; Wed, 04 Mar 2026 13:35:22 -0800 (PST) Received: from pumpkin (82-69-66-36.dsl.in-addr.zen.co.uk. [82.69.66.36]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4851883a007sm80403085e9.2.2026.03.04.13.35.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 04 Mar 2026 13:35:21 -0800 (PST) Date: Wed, 4 Mar 2026 21:35:20 +0000 From: David Laight To: Larysa Zaremba Cc: Tony Nguyen , intel-wired-lan@lists.osuosl.org, Przemek Kitszel , Andrew Lunn , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Alexander Lobakin , Simon Horman , Alexei Starovoitov , Daniel Borkmann , Jesper Dangaard Brouer , John Fastabend , Stanislav Fomichev , Aleksandr Loktionov , Natalia Wochtman , netdev@vger.kernel.org, linux-kernel@vger.kernel.org, bpf@vger.kernel.org Subject: Re: [PATCH iwl-next v3 04/10] ixgbevf: branch prediction and cleanup Message-ID: <20260304213520.17e16331@pumpkin> In-Reply-To: <20260304160345.1340940-5-larysa.zaremba@intel.com> References: <20260304160345.1340940-1-larysa.zaremba@intel.com> <20260304160345.1340940-5-larysa.zaremba@intel.com> X-Mailer: Claws Mail 4.1.1 (GTK 3.24.38; arm-unknown-linux-gnueabihf) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit On Wed, 4 Mar 2026 17:03:36 +0100 Larysa Zaremba wrote: > Add likely/unlikely markers for better branch prediction. While touching > some functions, cleanup the code a little bit. > > This patch is not supposed to make any logic changes aside from making > total_rx_bytes and total_rx_packets more correlated. > > Reviewed-by: Aleksandr Loktionov > Reviewed-by: Alexander Lobakin > Signed-off-by: Larysa Zaremba > --- > .../net/ethernet/intel/ixgbevf/ixgbevf_main.c | 29 +++++++++---------- > 1 file changed, 14 insertions(+), 15 deletions(-) > > diff --git a/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c b/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c > index 5a270dd2c7aa..4619f2bea1ab 100644 > --- a/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c > +++ b/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c > @@ -570,7 +570,7 @@ static void ixgbevf_alloc_rx_buffers(struct ixgbevf_ring *rx_ring, > u16 ntu = rx_ring->next_to_use; > > /* nothing to do or no valid netdev defined */ > - if (!cleaned_count || !rx_ring->netdev) > + if (unlikely(!cleaned_count || !rx_ring->netdev)) > return; > > rx_desc = IXGBEVF_RX_DESC(rx_ring, ntu); > @@ -586,7 +586,7 @@ static void ixgbevf_alloc_rx_buffers(struct ixgbevf_ring *rx_ring, > > rx_desc++; > ntu++; > - if (unlikely(ntu == rx_ring->count)) { > + if (unlikely(ntu == fq.count)) { > rx_desc = IXGBEVF_RX_DESC(rx_ring, 0); > ntu = 0; > } > @@ -823,7 +823,7 @@ static int ixgbevf_clean_rx_irq(struct ixgbevf_q_vector *q_vector, > > rx_desc = IXGBEVF_RX_DESC(rx_ring, rx_ring->next_to_clean); > size = le16_to_cpu(rx_desc->wb.upper.length); > - if (!size) > + if (unlikely(!size)) > break; > > /* This memory barrier is needed to keep us from reading > @@ -855,7 +855,7 @@ static int ixgbevf_clean_rx_irq(struct ixgbevf_q_vector *q_vector, > } > > /* exit if we failed to retrieve a buffer */ > - if (!xdp_res && !skb) { > + if (unlikely(!xdp_res && !skb)) { I'd check that generates something sensible. Using unlikely on multi-term conditionals doesn't always do something sensible. David > rx_ring->rx_stats.alloc_rx_buff_failed++; > break; > } > @@ -867,21 +867,19 @@ static int ixgbevf_clean_rx_irq(struct ixgbevf_q_vector *q_vector, > continue; > > /* verify the packet layout is correct */ > - if (xdp_res || ixgbevf_cleanup_headers(rx_ring, rx_desc, skb)) { > + if (xdp_res || > + unlikely(ixgbevf_cleanup_headers(rx_ring, rx_desc, skb))) { > skb = NULL; > continue; > } > > - /* probably a little skewed due to removing CRC */ > - total_rx_bytes += skb->len; > - > /* Workaround hardware that can't do proper VEPA multicast > * source pruning. > */ > - if ((skb->pkt_type == PACKET_BROADCAST || > - skb->pkt_type == PACKET_MULTICAST) && > - ether_addr_equal(rx_ring->netdev->dev_addr, > - eth_hdr(skb)->h_source)) { > + if (unlikely((skb->pkt_type == PACKET_BROADCAST || > + skb->pkt_type == PACKET_MULTICAST) && > + ether_addr_equal(rx_ring->netdev->dev_addr, > + eth_hdr(skb)->h_source))) { > dev_kfree_skb_irq(skb); > continue; > } > @@ -889,13 +887,14 @@ static int ixgbevf_clean_rx_irq(struct ixgbevf_q_vector *q_vector, > /* populate checksum, VLAN, and protocol */ > ixgbevf_process_skb_fields(rx_ring, rx_desc, skb); > > + /* probably a little skewed due to removing CRC */ > + total_rx_bytes += skb->len; > + total_rx_packets++; > + > ixgbevf_rx_skb(q_vector, skb); > > /* reset skb pointer */ > skb = NULL; > - > - /* update budget accounting */ > - total_rx_packets++; > } > > /* place incomplete frames back on ring for completion */