From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id DC5C8A04F1; Wed, 17 Jun 2020 05:22:16 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 2CC9F1BFC5; Wed, 17 Jun 2020 05:22:16 +0200 (CEST) Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by dpdk.org (Postfix) with ESMTP id 9FDC51BFBD for ; Wed, 17 Jun 2020 05:22:13 +0200 (CEST) IronPort-SDR: /MoYFrazXArGLlEH8L7+7nWBhs1z2MmTPLMQbO+6np/G2rroMXasiNJwJjC0s3hkeme8MwDdoP pDkPmqykODvw== X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga005.jf.intel.com ([10.7.209.41]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Jun 2020 20:22:12 -0700 IronPort-SDR: kzbOLLBO2VSjL40G5G1XbKlkEEpirdcSal4f897psaDzrBEudDOJLpl+2TmlJNahjsokjx/zn7 l0mG/e/Hojxg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.73,521,1583222400"; d="scan'208";a="450084473" Received: from orsmsx102.amr.corp.intel.com ([10.22.225.129]) by orsmga005.jf.intel.com with ESMTP; 16 Jun 2020 20:22:12 -0700 Received: from orsmsx608.amr.corp.intel.com (10.22.229.21) by ORSMSX102.amr.corp.intel.com (10.22.225.129) with Microsoft SMTP Server (TLS) id 14.3.439.0; Tue, 16 Jun 2020 20:22:12 -0700 Received: from orsmsx608.amr.corp.intel.com (10.22.229.21) by ORSMSX608.amr.corp.intel.com (10.22.229.21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Tue, 16 Jun 2020 20:22:11 -0700 Received: from ORSEDG002.ED.cps.intel.com (10.7.248.5) by orsmsx608.amr.corp.intel.com (10.22.229.21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256) id 15.1.1713.5 via Frontend Transport; Tue, 16 Jun 2020 20:22:11 -0700 Received: from NAM11-CO1-obe.outbound.protection.outlook.com (104.47.56.169) by edgegateway.intel.com (134.134.137.101) with Microsoft SMTP Server (TLS) id 14.3.439.0; Tue, 16 Jun 2020 20:22:10 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=bALDGrSHIKtUkKGAcK8L65+Xy6pPbauBxMvq6HSVTrfhjjID9G+FSHAGFO5tUMuvGQb9/uFVm9WL/2v3TwXZt9n6oXXRxHO+SY0/C/lFomo/gbRF3P1oI7TJzSHkDfPY4lPwShZLwELCHAhe8aX6CEVnHkCLp/CH01vX1LOCKdxSaI7xQN4EMqT/KjuI14Q6oPslYcwrAR7wW0xXihYIiUuD+J1T+GKzvwDor+A1mLWmRKE9QcOEmk1vpxvnKfw/8Naz9qatbpUDR2asKhjjVkd1mXmn7t1SfVkx6r8v9dyYTEUR3m05uWW9DvIpT2SJDR6P1yVUROnGi3aasc8V1Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=OFCl7EIR2Q50ImgpJ+JqFfX7qdRveqI+NhgyGwlvwyk=; b=BpPrN6qsfWmndIMKkm1f+Wsu4uweOOWmai2zMkvEeJ2r3NCM46lPQwWZ7uJey+u6JZZ0oXu4GCiNKzqne1xOEjyNvd8admAuF40tTwjAgxr9fW6OBE/N6uDIRe94CuLVtubDxoDAJdpGiCmXROR9Y8qjFN076Sl0sMJaoj5pns0fZzbtgwBJbMgc4XJzlcCjffg3YQgIA4HXjZHOO6Gp4/uGQh+B3nVMSWjv2rrKQoWJoXYIGMA3h82BFFgY8AlUbh1JBmb6R4FBt57a+i08SNEiA4OwyDxWAqILtXFDnl2kkHz8nL8Dh2SSvGoBAHNRPBD1R7fPsoUQ+EMV5N29lQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=OFCl7EIR2Q50ImgpJ+JqFfX7qdRveqI+NhgyGwlvwyk=; b=g92FPCc93BsDSy+S9EkbFmi7pCZ+I40QokXbn/F8+8P1haJtrNTmCmdRlYtMfJ/Wpa4Og5WuvXhtXSUXH7zWBr+g3MAoHiz+2ZpbRzjlmvqcUbRejrnRNfyoJmdfVpC0M6+1N+cZNy2+ugpDo/F51qV1M/10FoxFw42byY9Qw9M= Received: from MN2PR11MB4063.namprd11.prod.outlook.com (2603:10b6:208:13f::22) by MN2PR11MB3838.namprd11.prod.outlook.com (2603:10b6:208:f3::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3088.24; Wed, 17 Jun 2020 03:22:06 +0000 Received: from MN2PR11MB4063.namprd11.prod.outlook.com ([fe80::7cde:8326:5010:c47e]) by MN2PR11MB4063.namprd11.prod.outlook.com ([fe80::7cde:8326:5010:c47e%7]) with mapi id 15.20.3088.028; Wed, 17 Jun 2020 03:22:06 +0000 From: "Xia, Chenbo" To: Maxime Coquelin , "dev@dpdk.org" , "amorenoz@redhat.com" , "Ye, Xiaolong" , "shahafs@mellanox.com" , "matan@mellanox.com" Thread-Topic: [dpdk-dev] [PATCH 2/3] net/virtio: add reply-ack support to Virtio-user Thread-Index: AdZEVd77y3fSn4goSlWIM5TJmGbJSw== Date: Wed, 17 Jun 2020 03:22:06 +0000 Message-ID: Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: redhat.com; dkim=none (message not signed) header.d=none;redhat.com; dmarc=none action=none header.from=intel.com; x-originating-ip: [192.55.46.36] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: c11e434c-74a6-4d60-d456-08d8126d9cdb x-ms-traffictypediagnostic: MN2PR11MB3838: x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:8882; x-forefront-prvs: 04371797A5 x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: vZcu+7Sn2p8I4i8MmmnLEjM6zA3OHJfH0pOVvHTG+VpzRr71Czt5jwbn4UaquRxdic9ghnF3teuFlqQCQj1NWrx5n8O/PXKYoiNbFfYYa/KdW052J4+eLhyQaNMFI4hipbjLsaq84sU3rxiYVKZyK1zRPINgkKJxCDv6yuySD+u7wOU1YFZmm1ADK1A+xqLwrfXLebzEswRWtD06+gR9SabOEJMy+JI6yhnEozvs38oG2QybhWj+gTa90Dq5RFzbUCpQEbPdoeQ3+vp1xaUEIRZfBYnnhi5vB8+0QLj298ZJDHB2lWL20FlpqsL3jckFfGbQHM/v//PSlzGd3K++7w== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MN2PR11MB4063.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFTY:; SFS:(4636009)(366004)(136003)(346002)(396003)(376002)(39860400002)(53546011)(6506007)(83380400001)(7696005)(66946007)(66476007)(76116006)(71200400001)(8936002)(26005)(66446008)(64756008)(66556008)(5660300002)(9686003)(186003)(86362001)(8676002)(33656002)(316002)(110136005)(2906002)(52536014)(478600001)(55016002); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata: 6dCOHNE2aHBTVYPfv/qA6mXzFGoHEMf5qkF9UEN2YrhfF1KYiGCl0+m++x1OWuSvjLYSxAjvEjFCm4ZxXMoHjz93dArbljoN9Bwp3Nts66YwmfIayPcjtt54uSk2p6k0pkU2G+Fs4c9SF1relp6QMOhtIdP43haC/PM2ajANy8AJUHfB2yoW9lkt3K1cChFCcp0SQMLBioC8oN8aAI6LsPlYW0L0lRemrBkCKy01FddJvU8XklBI+U57LZLQCcOGKHODtW8XPmL6hMQXw53UE/BALlzufsHdrW0nHV7D1NZjtpzzTEu7WNBcsLnpf9aNgKbuIn5HA4keovUHJwW2bgYrLazi7n0ZAEomJOfrI+uZ7TKDtl9d2xrLmYtlbrLVTOvEKs8Ylh0t1JkYvFpObVDDSfDwC+JwWVD0DMTqtqByYEi+Ijan3gvBBgqSoqTlv6qlVp6PiSpocWk2JRBb5DEe1opRF17zSn2JMhG7cL4= Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-MS-Exchange-CrossTenant-Network-Message-Id: c11e434c-74a6-4d60-d456-08d8126d9cdb X-MS-Exchange-CrossTenant-originalarrivaltime: 17 Jun 2020 03:22:06.3723 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: Og1Ji8OLu1hFCW4x1agAdt/TzeLKz5fPOUOk12IAgBqMzRPIqS4LOcW0QmLGvMI8gJm7A2g51xNnUH1Qg61S8g== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR11MB3838 X-OriginatorOrg: intel.com Subject: Re: [dpdk-dev] [PATCH 2/3] net/virtio: add reply-ack support to Virtio-user X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Hi Maxime, > -----Original Message----- > From: dev On Behalf Of Maxime Coquelin > Sent: Thursday, May 28, 2020 3:46 PM > To: dev@dpdk.org; amorenoz@redhat.com; Ye, Xiaolong > ; shahafs@mellanox.com; matan@mellanox.com > Cc: Maxime Coquelin > Subject: [dpdk-dev] [PATCH 2/3] net/virtio: add reply-ack support to Virt= io-user >=20 > This patch adds support reply-ack vhost-user protocol feature, which is f= or now > only used to ensure VHOST_USER_SET_MEM_TABLE requests are handled by the > slave, but later will be used for VHOST_USER_SET_STATUS. >=20 > Signed-off-by: Maxime Coquelin > --- > drivers/net/virtio/virtio_user/vhost.h | 6 ++++- > drivers/net/virtio/virtio_user/vhost_user.c | 24 ++++++++++++++++--- > .../net/virtio/virtio_user/virtio_user_dev.c | 3 ++- > 3 files changed, 28 insertions(+), 5 deletions(-) >=20 > diff --git a/drivers/net/virtio/virtio_user/vhost.h > b/drivers/net/virtio/virtio_user/vhost.h > index 9ace1a90c3..260e1c3081 100644 > --- a/drivers/net/virtio/virtio_user/vhost.h > +++ b/drivers/net/virtio/virtio_user/vhost.h > @@ -50,7 +50,11 @@ struct vhost_vring_addr { >=20 > /** Protocol features. */ > #ifndef VHOST_USER_PROTOCOL_F_MQ > -#define VHOST_USER_PROTOCOL_F_MQ 0 > +#define VHOST_USER_PROTOCOL_F_MQ 0 > +#endif > + > +#ifndef VHOST_USER_PROTOCOL_F_REPLY_ACK #define > +VHOST_USER_PROTOCOL_F_REPLY_ACK 3 > #endif >=20 > enum vhost_user_request { > diff --git a/drivers/net/virtio/virtio_user/vhost_user.c > b/drivers/net/virtio/virtio_user/vhost_user.c > index b687665042..f8d751c98e 100644 > --- a/drivers/net/virtio/virtio_user/vhost_user.c > +++ b/drivers/net/virtio/virtio_user/vhost_user.c > @@ -32,6 +32,7 @@ struct vhost_user_msg { >=20 > #define VHOST_USER_VERSION_MASK 0x3 > #define VHOST_USER_REPLY_MASK (0x1 << 2) > +#define VHOST_USER_NEED_REPLY_MASK (0x1 << 3) > uint32_t flags; > uint32_t size; /* the following payload size */ > union { > @@ -251,6 +252,7 @@ vhost_user_sock(struct virtio_user_dev *dev, > struct vhost_user_msg msg; > struct vhost_vring_file *file =3D 0; > int need_reply =3D 0; > + int has_reply_ack; > int fds[VHOST_MEMORY_MAX_NREGIONS]; > int fd_num =3D 0; > int len; > @@ -263,6 +265,9 @@ vhost_user_sock(struct virtio_user_dev *dev, > if (dev->is_server && vhostfd < 0) > return -1; >=20 > + if (dev->protocol_features & (1ULL << > VHOST_USER_PROTOCOL_F_REPLY_ACK)) > + has_reply_ack =3D 1; > + > msg.request =3D req; > msg.flags =3D VHOST_USER_VERSION; > msg.size =3D 0; > @@ -291,6 +296,9 @@ vhost_user_sock(struct virtio_user_dev *dev, > msg.size =3D sizeof(m.payload.memory.nregions); > msg.size +=3D sizeof(m.payload.memory.padding); > msg.size +=3D fd_num * sizeof(struct vhost_memory_region); > + > + if (has_reply_ack) > + msg.flags |=3D VHOST_USER_NEED_REPLY_MASK; Do we have counterpart in vhost-user to handle such case as VHOST_USER_SET_= MEM_TABLE may have a need-reply mask? Do I miss something? Thanks, Chenbo > break; >=20 > case VHOST_USER_SET_LOG_FD: > @@ -339,7 +347,7 @@ vhost_user_sock(struct virtio_user_dev *dev, > return -1; > } >=20 > - if (need_reply) { > + if (need_reply || msg.flags & VHOST_USER_NEED_REPLY_MASK) { > if (vhost_user_read(vhostfd, &msg) < 0) { > PMD_DRV_LOG(ERR, "Received msg failed: %s", > strerror(errno)); > @@ -369,8 +377,18 @@ vhost_user_sock(struct virtio_user_dev *dev, > sizeof(struct vhost_vring_state)); > break; > default: > - PMD_DRV_LOG(ERR, "Received unexpected msg type"); > - return -1; > + /* Reply-ack handling */ > + if (msg.size !=3D sizeof(m.payload.u64)) { > + PMD_DRV_LOG(ERR, "Received bad msg size"); > + return -1; > + } > + > + if (msg.payload.u64 !=3D 0) { > + PMD_DRV_LOG(ERR, "Slave replied NACK"); > + return -1; > + } > + > + break; > } > } >=20 > diff --git a/drivers/net/virtio/virtio_user/virtio_user_dev.c > b/drivers/net/virtio/virtio_user/virtio_user_dev.c > index 3afb09df2d..ea22af5dc4 100644 > --- a/drivers/net/virtio/virtio_user/virtio_user_dev.c > +++ b/drivers/net/virtio/virtio_user/virtio_user_dev.c > @@ -423,7 +423,8 @@ virtio_user_dev_setup(struct virtio_user_dev *dev) > 1ULL << VHOST_USER_F_PROTOCOL_FEATURES) >=20 > #define VIRTIO_USER_SUPPORTED_PROTOCOL_FEATURES \ > - (1ULL << VHOST_USER_PROTOCOL_F_MQ) > + (1ULL << VHOST_USER_PROTOCOL_F_MQ | \ > + 1ULL << VHOST_USER_PROTOCOL_F_REPLY_ACK) >=20 > int > virtio_user_dev_init(struct virtio_user_dev *dev, char *path, int queues= , > -- > 2.26.2