All of lore.kernel.org
 help / color / mirror / Atom feed
From: Hangbin Liu <hangbin.liu@linux.dev>
To: Xia Yan <yana06070@163.com>
Cc: netdev@vger.kernel.org, andrew+netdev@lunn.ch,
	davem@davemloft.net, edumazet@kernel.org, horms@kernel.org,
	kuba@kernel.org, linux-kernel@vger.kernel.org,
	linux-kselftest@vger.kernel.org, pabeni@redhat.com,
	shuah@kernel.org
Subject: Re: [PATCH net v3 2/2] selftests: net: check veth carrier after changing channel counts
Date: Fri, 23 Oct 2026 09:47:52 +0800	[thread overview]
Message-ID: <atq8yKbnqtLBVucH@fedora> (raw)
In-Reply-To: <20261022085842.2527-2-yana06070@163.com>

Hi Yan Xia,
On Thu, Oct 22, 2026 at 04:58:42PM +0800, Xia Yan wrote:
> Extend veth.sh to check carrier state after changing channel counts.
> A running interface must keep carrier off while its peer is down.
> 
> Cover up/up and both mixed up/down combinations with GRO on and off.
> Resize RX and TX queues in both directions on each endpoint, and check
> that rejecting an out-of-range request also preserves carrier state.
> Use two queues explicitly so these cases also run on single-CPU systems.
> 
> Keep these cases with the existing veth tests and reuse their namespace
> setup, cleanup and aggregate failure status. Only check LOWER_UP on
> running interfaces, where that flag exposes carrier state.
> 
> The four mixed up/down cases fail with the unfixed driver. All six
> carrier cases and the existing checks pass with the fix.
> 
> Assisted-by: LLM
> Signed-off-by: Xia Yan <yana06070@163.com>
> ---
> 
> Notes:
>     Changes in v3:
>     - Move the six carrier cases into veth.sh following review of v2.
>     - Reuse namespace setup, cleanup and error reporting.
>     - Allow explicit queue counts in create_ns().
> 
>     v2: https://lore.kernel.org/netdev/20261020135544.24441-1-yana06070@163.com/
> 
>     Testing on the v2 baseline 513444cc62e2:
>     - Complete default veth.sh on x86_64 QEMU/KVM, three vCPUs:
>       before: 57 checks pass, four mixed up/down carrier checks fail;
>       after: all 61 checks pass. The 55 existing checks pass on both.
>     - bash -n and git diff --check pass.
>     - If creating the veth pair fails, the case is skipped without
>       masking failures from earlier test cases.
> 
>     Both patches also apply to net/main ffdf678dd166
>     (application check only, checked on 2026-10-22).
> 
>     The QEMU guests failed to power off cleanly (initramfs issue) after
>     the tests completed; the exit codes above are the veth.sh results.
> 
> 
>  tools/testing/selftests/net/veth.sh | 84 ++++++++++++++++++++++++++++-
>  1 file changed, 83 insertions(+), 1 deletion(-)
> 
> diff --git a/tools/testing/selftests/net/veth.sh b/tools/testing/selftests/net/veth.sh
> index 8b867e0..901ba51 100755
> --- a/tools/testing/selftests/net/veth.sh
> +++ b/tools/testing/selftests/net/veth.sh
> @@ -41,13 +41,15 @@ create_ns() {
>  		ip -n $ns link set dev lo up
>  	done
>  
> -	ip link add name veth$SRC type veth peer name veth$DST
> +	ip link add name veth$SRC "$@" type veth peer name veth$DST "$@" || return 1
>  
>  	for ns in $SRC $DST; do
>  		ip link set dev veth$ns netns $BASE$ns up
>  		ip -n $BASE$ns addr add dev veth$ns $BM_NET_V4$ns/24
>  		ip -n $BASE$ns addr add dev veth$ns $BM_NET_V6$ns/64 nodad
>  	done
> +
> +	return 0
>  }
>  
>  __chk_flag() {
> @@ -130,6 +132,80 @@ chk_channels() {
>  	fi
>  }
>  
> +chk_carrier() {
> +	local target=$1
> +	local state=$2
> +	local expected=$3
> +	local carrier=0
> +	local link
> +
> +	# IFF_LOWER_UP is reported only for running interfaces.
> +	[ "$state" = up ] || return 0
> +
> +	if ! link=$(ip -n $BASE$target -o link show dev veth$target); then
> +		echo " fail - cannot read veth$target link state"
> +		return 1
> +	fi
> +	case "$link" in
> +		*LOWER_UP*) carrier=1 ;;
> +	esac
> +	if [ "$carrier" -ne "$expected" ]; then
> +		echo " fail - veth$target carrier is $carrier, expected $expected"
> +		return 1
> +	fi
> +}
> +
> +chk_channels_carrier() {
> +	local src_state=$1
> +	local dst_state=$2
> +	local gro=$3
> +	local expected=0
> +	local err=0
> +	local target count
> +	local msg="carrier after channel change ($src_state/$dst_state, GRO $gro)"
> +
> +	if ! create_ns numtxqueues 2 numrxqueues 2; then
> +		printf "%-60s" "$msg"
> +		echo " skip - cannot create veth pair"
> +		cleanup
> +		return
> +	fi
> +
> +	ip -n $NS_SRC link set dev veth$SRC "$src_state" || err=1
> +	ip -n $NS_DST link set dev veth$DST "$dst_state" || err=1
> +	ip netns exec $NS_SRC ethtool -K veth$SRC gro "$gro" >/dev/null || err=1
> +	ip netns exec $NS_DST ethtool -K veth$DST gro "$gro" >/dev/null || err=1

Why do you do gro setting in rx/tx set ups?

Thanks
Hangbin

  reply	other threads:[~2026-10-23  1:48 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-10-22  8:58 [PATCH net v3 1/2] veth: keep carrier off when resizing channels with a down peer Xia Yan
2026-10-22  8:58 ` [PATCH net v3 2/2] selftests: net: check veth carrier after changing channel counts Xia Yan
2026-10-23  1:47   ` Hangbin Liu [this message]
2026-10-23  2:33     ` Xia Yan
2026-10-23  3:15       ` Hangbin Liu
2026-10-23  3:35         ` Xia Yan
2026-10-23  1:56 ` [PATCH net v3 1/2] veth: keep carrier off when resizing channels with a down peer Hangbin Liu

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=atq8yKbnqtLBVucH@fedora \
    --to=hangbin.liu@linux.dev \
    --cc=andrew+netdev@lunn.ch \
    --cc=davem@davemloft.net \
    --cc=edumazet@kernel.org \
    --cc=horms@kernel.org \
    --cc=kuba@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-kselftest@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=pabeni@redhat.com \
    --cc=shuah@kernel.org \
    --cc=yana06070@163.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.