Received: by 2002:a05:7412:8d10:b0:f3:1519:9f41 with SMTP id bj16csp4415385rdb; Mon, 11 Dec 2023 20:35:56 -0800 (PST) X-Google-Smtp-Source: AGHT+IG+nmyDIZJ44bWNg9qwJxWIugh93OcqH1BVujm2waHkIpNjqoXWDUHBg8jFNDohPrlQ5189 X-Received: by 2002:a17:903:11cd:b0:1d3:2a94:cb24 with SMTP id q13-20020a17090311cd00b001d32a94cb24mr1219032plh.9.1702355755856; Mon, 11 Dec 2023 20:35:55 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1702355755; cv=none; d=google.com; s=arc-20160816; b=ewE5Tl9jBcvjwfki+VTylbFCVR/LhgMYmFsusFUl6P9KF+Dk2eTQUG5meRy7oYbIwU fINDFsW65UoA3bY3arVK2gSoRdemXwiYvc1wTqumfMLoB77RkN1Oh4yZoSS/KOcZf3tn JOEBARuJz08T7e5kRat9BR4OSEiOqmG5D40Fz7mZF61spOTWGAJADC1MnBGI70l9YOEE Pq0V4zs4NBQroBxK7EPWHnoDbUh299txq8/o8iMQaDSvQPMGxBWjtPJ33sLvaGmhadDN B56N8Q7+b+jUTDXYeWbHB9NPn70/A4NBAnI6XcGnoER+WvL8it/OQRbxTMK9VgX2WqjS VMvg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:cc:to:subject :message-id:date:from:in-reply-to:references:mime-version :dkim-signature; bh=3VntsOLPXuWJtx6zQj2tvFN5GConn9kSc0M72tw246g=; fh=kX0NVv7t34+2OdMZAe774/Oh2KOeWinvK3jN2PJ2ws8=; b=LND4Ex1tp4qJ2wRSMUrvyvmGmntShTm8kb36dQ68167CcYDHvZXQ0DLh4SovPmuIZj mXvKLuMlJkcY5TzeW8N0dmja/V9qO1ZkfjmB3GCQ6/30VUyO9tpTZ8rXFMgnjujYMiWJ MhNwofGN61ob2VgVg71xAJoQ0IBiIOwJh8IWsmI5Ywj8L0fGshvhKsro3Dr6uyVWQ8Px CFYlYkQxg07k7BQW9WTPVbA5Lu3C7mJcXEJdMOkd9wW9bfVYSKlVyP6C5yy/h80P5+vs teLp3ma4cNcXi9IFkXcwmM7bj3uJBbqu1jprog5oxkUCjFEFYmcRm4+lWBDN9R2DVi3t QkKQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=Cc5vElki; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.33 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from lipwig.vger.email (lipwig.vger.email. [23.128.96.33]) by mx.google.com with ESMTPS id c17-20020a170902d49100b001d054a8f128si7357407plg.451.2023.12.11.20.35.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 Dec 2023 20:35:55 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.33 as permitted sender) client-ip=23.128.96.33; Authentication-Results: mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=Cc5vElki; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.33 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by lipwig.vger.email (Postfix) with ESMTP id 8A9A7805092C; Mon, 11 Dec 2023 20:35:53 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at lipwig.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229560AbjLLEfS (ORCPT + 99 others); Mon, 11 Dec 2023 23:35:18 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36794 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229555AbjLLEfQ (ORCPT ); Mon, 11 Dec 2023 23:35:16 -0500 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D9997E4 for ; Mon, 11 Dec 2023 20:35:18 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1702355718; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=3VntsOLPXuWJtx6zQj2tvFN5GConn9kSc0M72tw246g=; b=Cc5vElkisxoK69ivsjqSWMAO8XihsssD89GJlz2F/iOPTlG68FZI0MLdZrTQdZJ9v8881+ 3mfbQ7R9mC3wVVExoKqYkoS80lxRw6oThwULWX02SrD5v5/siUhAk4tjBr9OYkZSym233v Dtg2wzvT9iO3HH4coAjPVPtjC+4dCXk= Received: from mail-qk1-f197.google.com (mail-qk1-f197.google.com [209.85.222.197]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-345-4jjlgN0XO7y6H0mIsrqFbQ-1; Mon, 11 Dec 2023 23:35:16 -0500 X-MC-Unique: 4jjlgN0XO7y6H0mIsrqFbQ-1 Received: by mail-qk1-f197.google.com with SMTP id af79cd13be357-77f41dc15b7so665592985a.2 for ; Mon, 11 Dec 2023 20:35:16 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1702355716; x=1702960516; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=3VntsOLPXuWJtx6zQj2tvFN5GConn9kSc0M72tw246g=; b=ayLy+jNeDy3Q14T/TnO7Wrwj+tPUkoeDu+JAO4mdwFwi+9uYslOP8UZYWOga4dqKP6 jbAxiXfU1qEFL1ezx+ma/s4odkcqpI+OJrNhtN/pWtUq+GN6QpNASqEzHGO57KKh0HxS veLcTQKITN6zl93RQ8uLuS+qBaGjiU8NAgn7QsRKVSiZcr9GFvRim0ekYvpDy5roK2WZ TzH8nsXxY9S3Gq71eAdtj6L8oI2JYpXQkJidmL4+JbLPOPSr2aoCIjjwlRSczAxb8BN4 i6btVmLEJw+pKqGZAseQliQ7CA9UMpF3pwrANymjxW49NpWdz33lxCzDwJauwJCqMQp5 USgA== X-Gm-Message-State: AOJu0YyEoGm7UCNcXXfOkvooS98MeLUMxzLg3fesgtb4rCKzw5eL5KXw qT3A/eBuhJJXmLYAN4UFKJbM6cQfF7ofNAZz2keXAlyPz3R147Inh29k/0/HFt5oCA3kq3Y9wn9 51itdRJy/Lae3U0UPAZ7TpFPyE6S+/2Rjr/aJZ+3S X-Received: by 2002:a05:620a:4614:b0:77f:6dd:4dba with SMTP id br20-20020a05620a461400b0077f06dd4dbamr8523579qkb.96.1702355716174; Mon, 11 Dec 2023 20:35:16 -0800 (PST) X-Received: by 2002:a05:620a:4614:b0:77f:6dd:4dba with SMTP id br20-20020a05620a461400b0077f06dd4dbamr8523573qkb.96.1702355715908; Mon, 11 Dec 2023 20:35:15 -0800 (PST) MIME-Version: 1.0 References: <20231205113444.63015-1-linyunsheng@huawei.com> <20231205113444.63015-7-linyunsheng@huawei.com> <424670ab-23d8-663b-10cb-d88906767956@huawei.com> In-Reply-To: <424670ab-23d8-663b-10cb-d88906767956@huawei.com> From: Jason Wang Date: Tue, 12 Dec 2023 12:35:04 +0800 Message-ID: Subject: Re: [PATCH net-next 6/6] tools: virtio: introduce vhost_net_test To: Yunsheng Lin Cc: davem@davemloft.net, kuba@kernel.org, pabeni@redhat.com, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, "Michael S. Tsirkin" , Xuan Zhuo , virtualization@lists.linux.dev Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Spam-Status: No, score=-0.9 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lipwig.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (lipwig.vger.email [0.0.0.0]); Mon, 11 Dec 2023 20:35:53 -0800 (PST) On Thu, Dec 7, 2023 at 7:28=E2=80=AFPM Yunsheng Lin wrote: > > On 2023/12/7 14:00, Jason Wang wrote: > > On Tue, Dec 5, 2023 at 7:35=E2=80=AFPM Yunsheng Lin wrote: > ... > > >> + > >> +static int tun_alloc(void) > >> +{ > >> + struct ifreq ifr; > >> + int fd, e; > >> + > >> + fd =3D open("/dev/net/tun", O_RDWR); > >> + if (fd < 0) { > >> + perror("Cannot open /dev/net/tun"); > >> + return fd; > >> + } > >> + > >> + memset(&ifr, 0, sizeof(ifr)); > >> + > >> + ifr.ifr_flags =3D IFF_TUN | IFF_NO_PI; > > > > Why did you use IFF_TUN but not IFF_TAP here? > > To be honest, no particular reason, I just picked IFF_TUN and it happened > to work for me to test changing in vhost_net_build_xdp(). > > Is there a particular reason you perfer the IFF_TAP over IFF_TUN? No preference here. It only matters if you want to test L2 or L3. > > > > >> + strncpy(ifr.ifr_name, "tun0", IFNAMSIZ); > > > > tun0 is pretty common if there's a VPN. Do we need some randomized name= here? > > How about something like below? > > snprintf(ifr.ifr_name, IFNAMSIZ, "tun_%d", getpid()); > > > > > > >> + > >> + e =3D ioctl(fd, TUNSETIFF, (void *) &ifr); > >> + if (e < 0) { > >> + perror("ioctl[TUNSETIFF]"); > >> + close(fd); > >> + return e; > >> + } > >> + > >> + return fd; > >> +} > >> + > >> +/* Unused */ > >> +void *__kmalloc_fake, *__kfree_ignore_start, *__kfree_ignore_end; > > > > Why do we need trick like these here? > > That is because of the below error: > tools/virtio/./linux/kernel.h:58: undefined reference to `__kmalloc_fake' > > when virtio_ring.c is compiled in the userspace, the kmalloc raleted func= tion > is implemented in tools/virtio/./linux/kernel.h, which requires those var= ibles > to be defined. > > > > >> + > >> +struct vq_info { > >> + int kick; > >> + int call; > >> + int num; > >> + int idx; > >> + void *ring; > >> + /* copy used for control */ > >> + struct vring vring; > >> + struct virtqueue *vq; > >> +}; > >> + > >> +struct vdev_info { > >> + struct virtio_device vdev; > >> + int control; > >> + struct pollfd fds[1]; > >> + struct vq_info vqs[1]; > >> + int nvqs; > >> + void *buf; > >> + size_t buf_size; > >> + struct vhost_memory *mem; > >> +}; > >> + > >> +static struct vhost_vring_file no_backend =3D { .index =3D 1, .fd =3D= -1 }, > >> + backend =3D { .index =3D 1, .fd = =3D 1 }; > > > > A magic number like fd =3D 1 is pretty confusing. > > > > And I don't see why we need global variables here. > > I was using the virtio_test.c as reference, will try to remove it > if it is possible. > > > > >> +static const struct vhost_vring_state null_state =3D {}; > >> + > > .. > > >> + > >> +done: > >> + backend.fd =3D tun_alloc(); > >> + assert(backend.fd >=3D 0); > >> + vdev_info_init(&dev, features); > >> + vq_info_add(&dev, 256); > >> + run_test(&dev, &dev.vqs[0], delayed, batch, reset, nbufs); > > > > I'd expect we are testing some basic traffic here. E.g can we use a > > packet socket then we can test both tx and rx? > > Yes, only rx for tun is tested. > Do you have an idea how to test the tx too? As I am not familar enough > with vhost_net and tun yet. Maybe you can have a packet socket to bind to the tun/tap. Then you can tes= t: 1) TAP RX: by write a packet via virtqueue through vhost_net and read it from packet socket 2) TAP TX: by write via packet socket and read it from the virtqueue through vhost_net Thanks > > > > > Thanks >