From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wm1-f53.google.com (mail-wm1-f53.google.com [209.85.128.53]) (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 EC9F413B284 for ; Wed, 4 Mar 2026 21:35:23 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.53 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772660125; cv=none; b=Nrv99KRVAcE79BMGaY9PEMyTIteBrsYONc7+zsbbgC9XRLol+8X6rSgtMuW8QqUFBszQ/Z67Qhzdwm336wsxLwWqhsbACGhH28HlE43ajoz+u8obrWvcisvU2YMJ/h8dwR6DWU15COWhWNEWjEqMB3aKVdQ96P7qGPSPjxrkWGA= 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.53 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-f53.google.com with SMTP id 5b1f17b1804b1-4806f3fc50bso79108285e9.0 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=gpT2Hymk6tEkFxGAi2uQsGNoIwl4LIU6wLnjBniYWvpvWuxLN7qTp+lRhSVT1Fh6Pm GjtbR77qrn3p8G7sOs6rknEKNqlflwZAZsse88wPGB6s2L/li9Iu/qU8xeuNK0AKiXB5 oTb5k64/29G+x+34jPhsRUkiLWYLYmq825OPbsmuCncYx8XtU0SF52PXb8LDZAG3m/1p 0tw7Z8czXlLrIyGxvbndhnOmmAbaityEITw8OKi3oqALl/9+BBfIford/4c3zuNN6c0N Q8nXxE5YlHLIppLBAUsIXLMelaIBqbkAi25j6oFKKvaStTpvnPHfqWNndM9S4mkTRQk1 3Haw== X-Forwarded-Encrypted: i=1; AJvYcCUMfJPAVjP0siE4UrsBcgLCKebXCCNXY4GzDvSOiuHkDpR4fkNyiu33v/KFkztcy6A6SThtfBo=@vger.kernel.org X-Gm-Message-State: AOJu0Ywl4jrAz8hdqELeSZ8aHquZPMsG5OIl2XUJubIdzz47ui2W6rlt sBnIyLwW/ruXBFzbMCY1fMNrA4BrrXqV8JCNSBlw4AkcBrAeauex12Fr X-Gm-Gg: ATEYQzxcShBIJgcFsjYSIML2TxoYdqBKC7bw5t8Xaan8w+cFcS2VQe9g1mTaECBIebH PLQeTh0OqmF9shOCVvCIRMVuOXC2Kuu0yv+XTwUScEmwHApiJvIQEiKymUuJZVhN20I7V8XZR7a pYmg4SgF8OYpwhaVWT6S2W9x+irhDjztkGbDw3oaIDhY33iVuCXO8Dae33wOdqn4SbG/0IQfzHO vXbHf6X02/Eseakt0RZukOuwTrgV0Y17Ro40DzGyG4a3mbMIEc0mDPNaSnARYdunL7LM1pTAnJq uJkqx3zqWHefVr/Gh9pudppvRbe8zjKhyZqplUd8TDU+zVkBXMxzXjPMI5pNIJncgxRQNnbtgv6 Nj65nUCeazsrPhRxxNFvY/diXAnTIFifa0MOv8a69RXu39bCg3Gg4NC5hjPgUqHobmu1U+OMHyi ZOdY8oTjnF6e8c8uOPw0qPZDOfn01sl1GS0XCVLUP8Z9EnvXEzDZnsJciQeR6vryqGua8S2fJYU +8= 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: netdev@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 */