From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 5857E45B44; Tue, 15 Oct 2024 18:22:56 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 205B240273; Tue, 15 Oct 2024 18:22:56 +0200 (CEST) Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.10]) by mails.dpdk.org (Postfix) with ESMTP id 86344400D7 for ; Tue, 15 Oct 2024 18:22:54 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1729009375; x=1760545375; h=date:from:to:cc:subject:message-id:references: in-reply-to:mime-version; bh=viyaopaRps/ieFzNdmWANKk3GaqtnmJRTottHzrJB/w=; b=gtU+VTGZrunKnBFGTw9BcUgUms6rBIiXVt/EMphaWO68CUQXAd2/rOqZ ErMKU5LOkZVCSnBWGx0AHNuLHHmaDHgqv4Cp8IDl1RDBLDkhJMh+0Z9QC LhYDEmgS3S6p72gEUzR2mRut9BpwkuZbBzpvTn5tvm9jja5x5zbOUE0qu GznHKQf+ACGU7Nax/WzqwTB5HSgKT+Piyhn2LMjpty8KqLfB9AYVKGGmK fenDh7gKHyokfYd67cmCyQY13cj+9ORc0OdjvR48c6lNfyBFYSrVoNmAY DaUiX37ozW1JwHcu9Pa8Py6IgD1x30pA5dfeTw7YMJYlZeyshn1/kiXMs w==; X-CSE-ConnectionGUID: unXHd0gDRrGR5v6v/ywsBQ== X-CSE-MsgGUID: l7/9bKlNS8an03m6aK10Cg== X-IronPort-AV: E=McAfee;i="6700,10204,11225"; a="39789719" X-IronPort-AV: E=Sophos;i="6.11,205,1725346800"; d="scan'208";a="39789719" Received: from orviesa001.jf.intel.com ([10.64.159.141]) by fmvoesa104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 Oct 2024 09:22:42 -0700 X-CSE-ConnectionGUID: 3GHEUbmmTFqVxt8dfac7fQ== X-CSE-MsgGUID: ZGYv+lYsT8WUO5QS8piirQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.11,205,1725346800"; d="scan'208";a="115392780" Received: from orsmsx603.amr.corp.intel.com ([10.22.229.16]) by orviesa001.jf.intel.com with ESMTP/TLS/AES256-GCM-SHA384; 15 Oct 2024 09:22:42 -0700 Received: from orsmsx612.amr.corp.intel.com (10.22.229.25) by ORSMSX603.amr.corp.intel.com (10.22.229.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Tue, 15 Oct 2024 09:22:41 -0700 Received: from orsmsx602.amr.corp.intel.com (10.22.229.15) by ORSMSX612.amr.corp.intel.com (10.22.229.25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Tue, 15 Oct 2024 09:22:41 -0700 Received: from ORSEDG602.ED.cps.intel.com (10.7.248.7) by orsmsx602.amr.corp.intel.com (10.22.229.15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39 via Frontend Transport; Tue, 15 Oct 2024 09:22:41 -0700 Received: from NAM11-CO1-obe.outbound.protection.outlook.com (104.47.56.172) by edgegateway.intel.com (134.134.137.103) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.39; Tue, 15 Oct 2024 09:22:41 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=LJJ9kH4+F3yZW2mpUCN3AB0d5JhcVewPbafPqc+Nx5AhIprELMnKfKs8bkU4iqJdLJ+AMUZfHkSqVAXpsaW49Hl3mdST9zKe0zgp9+PgKJsEvmZgia3tj34m+KHZQ0IGoIe5b9wXg0NpV1qltlEAswZUCGQfP0AbMccOHYL3LNAK/hwcGmAhIJwy03JySdhbv0uoB8Ga/6FhDU2lZNum6PjaS/ewJOtXNPcJXJXIUZ/p4fLCp1oP+J7mq9WUuEOcN45wyc4lRTi4OBjRYn5jQWXenFjU/gsdRFEJkD3jzJ3HG59Fo3m/n6O/kYLbqS+mcJEuE3BJ7ej9zuFZutts+g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=kbZrL4WkUMXM39Uf2agqDF6DHLo/5YKJPUQbu9M/DcY=; b=htEQSglIlJli60y01aVt+TJ+QQkp/5GafB3xhOIH3G1XJooQRGPVFG768sBTr40TosFC95kYrd9OHAUxcGQvr8kiBuw2KNm7I3FsTLZUELHGKs/frmeNE9+WXucYIftgxPsMn2c0SsdQym/WiiQzpU0PYB66rm07h4ENWMbgrCY/AqIyg2t1BM7ScDXK0F8dOkKDJ/mPV56pPfXZ2tWzhLYyRApBtgiFXGQuyCQdYM1S9GN3cCC0LbpaSuaPIAX1RcIcPnRZtUBDBTYa+nUGKdCHk40Sg/bFBO6nKhDwYRj0QH7xdNe4o9d+MEix+spAel1HbqLnJ9WD+B0xjC3a1g== 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 Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; Received: from DS0PR11MB7309.namprd11.prod.outlook.com (2603:10b6:8:13e::17) by DM4PR11MB6551.namprd11.prod.outlook.com (2603:10b6:8:b9::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.26; Tue, 15 Oct 2024 16:22:37 +0000 Received: from DS0PR11MB7309.namprd11.prod.outlook.com ([fe80::f120:cc1f:d78d:ae9b]) by DS0PR11MB7309.namprd11.prod.outlook.com ([fe80::f120:cc1f:d78d:ae9b%4]) with mapi id 15.20.8069.016; Tue, 15 Oct 2024 16:22:37 +0000 Date: Tue, 15 Oct 2024 17:22:31 +0100 From: Bruce Richardson To: David Marchand CC: , Jingjing Wu Subject: Re: [PATCH] net/iavf: simplify mailbox message generation for mac Message-ID: References: <20241001091507.98785-1-david.marchand@redhat.com> Content-Type: text/plain; charset="us-ascii" Content-Disposition: inline In-Reply-To: <20241001091507.98785-1-david.marchand@redhat.com> X-ClientProxiedBy: DB8PR09CA0009.eurprd09.prod.outlook.com (2603:10a6:10:a0::22) To DS0PR11MB7309.namprd11.prod.outlook.com (2603:10b6:8:13e::17) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS0PR11MB7309:EE_|DM4PR11MB6551:EE_ X-MS-Office365-Filtering-Correlation-Id: 902afd9d-4db7-4406-db1d-08dced3594f7 X-LD-Processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|366016|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?rFiZhvjBdb+zNmwE4/CwCrk8V6rVdeMOfOrpTQHuO4kIAwSnc/0nP+5IEhw/?= =?us-ascii?Q?L7aq7RjQngJUq/5rFzgnF/hZ+ys6NOsVQhfxozMAQ59nqg37FrK2+6wzx9eh?= =?us-ascii?Q?DyiVqa0VAklzgxljA+PIsQumji8mCTrb5sXpFfrGNB6YhEpIyWPiQ3KuizQl?= =?us-ascii?Q?gUk7Z8Ic6dbfj+Cs/LfVvdS/Dbdcfw841rTIwFfWFnlRqPXC8fAZ1tk+4iEg?= =?us-ascii?Q?S0jg22MV4AzH4jsmujMYEf++Nip6vGerECmklHxMo+H5tmldGwfgzE+m6JRp?= =?us-ascii?Q?yfd7Dtc8KWgBK0ChvbOPjFFB+rZ+HgoTly7jcDRph3kiSPW0uyKFDPP3ZOur?= =?us-ascii?Q?7K5pJbFtBgSYXOHC4+V7FUfJO1bE1/fn9gGwGbJTdY23VNUCsw9E+S3HOB22?= =?us-ascii?Q?zScMtX7RRX4I9n/8TOeFWPCxx7Zew1cvvAkwWrzhxtMXQ3XchhO0SArsgwTF?= =?us-ascii?Q?f+vJO+GgMhQEkwxvtvapgNpUHkfjv+xBWgqgN5fNS1Iaen0LHnvF8roUXKUR?= =?us-ascii?Q?tju94yn6GGCBRf7jY+IUwKW4qqWgXukaZYitPWQchERy9x/mM0j4k+6IgVzD?= =?us-ascii?Q?VtD71qI9HnItLShTqfSWvykwWb+JvCafQxlM7zwBBQXzDic+tz9gO9ZLHjdw?= =?us-ascii?Q?UVKIiP0G+cBdfUS9ra3J4mxMSRZVFyqiUrVexP7JLBqTymgPdb1UtIDILdPO?= =?us-ascii?Q?21aXwNJ97hQa1uuF4H2f3yqQQdv+Ekwa9ytGt452mi32rk16rPrHEHYyQKU0?= =?us-ascii?Q?/TdlXtBL8RAYk8wy3JxRnq8tVVA/yPsGUJHpcswZ3jbANzcd3Qpv0D2wxxHl?= =?us-ascii?Q?XgbaSnwpqVe/vQXSwU5kfL4zzlHvZ3vqy2EyGQqPZWwt6W/SUtjH5lHCHApK?= =?us-ascii?Q?ulKhSYqqwZM5MhHkSNmdx7KWsTsVBi2r26rBjlzYdFwK1UJJIbbTn/apOrpN?= =?us-ascii?Q?A7qIQsIfLp/t+y+essQoI8K1L3Sf/IbkzdLvX735RkBmBdUc7U/9U7xQdkV0?= =?us-ascii?Q?Fv5jvczO04PehXVfab37wdeqP5LC+I9huscpbbE3/P1FCUHEY+Lz/UiNjW0D?= =?us-ascii?Q?J99HBOle2weOHptUzyiCX/6P2x2DspMSNDLK44h5EevCDjjt7uX/z3J9wGur?= =?us-ascii?Q?zQqD6Vb5boAb07OqUYvv3r4erOeRxp0COnvJP396u77oQecp75S98wNGBTrd?= =?us-ascii?Q?8OvM+Qx+hOnydHpvIDsbqbDhNglu3eWeycf48vUl674QhplI5P5St9UeHvWU?= =?us-ascii?Q?KtNjMeTB9JvUMD32P8nJBmfj+g0XHHHZK6LNTDrg2A=3D=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DS0PR11MB7309.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(376014)(366016)(1800799024); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?XPiiRa+KS548tNDJcsLz0KTY2vLBd45d34jYk+pzo8l9mNDllBgNCdJ8Okvq?= =?us-ascii?Q?IKKoScp76Q1kLM3BpyHdm1/6mzQysR0f3mM4wJTbtf6T6bfsUvx4DMxMhl8m?= =?us-ascii?Q?oE+tkP8gXIGYrtOLdEx7RMpRq/MTy9Mv0YppihtZcYPyxoIg4Lt0ZENmaEze?= =?us-ascii?Q?1bDbn8kICgSGR7oVLHoQEE+ycXnP8V9oiIX0NaL7l33JGOe14rdOuSXEQ9R3?= =?us-ascii?Q?8A7HdO1TozxNEcOijsLqMiZPRvx4Lw3t7sS1FO+1bGDQ8BVMTYx9NI7L3OeF?= =?us-ascii?Q?xg00w1yLYkDwvTDHJo0D2Z+mVFP+4KWAk9IauOzxMTjm2zRY/1xb1o1Mq2qp?= =?us-ascii?Q?Kzr/TylmfdRE+/eDe60/M4sbmGhnFfnUmA8c5aekynvqjzlxTIn/Eij2+5Co?= =?us-ascii?Q?xZyqGid+ENVGYVyd/cc7sblfXSOgISBNHM5WTwaZKQaodpPJaDgeKwD+s6XZ?= =?us-ascii?Q?WRaPOmtQWlddnLMqIznIlm/ZJe0QZDvKfOmL0gq9dZ/ogfGaU4TECosaImWj?= =?us-ascii?Q?ByOCbKjS5Z/yMu5B0vn77XDIzEOg9V9Z6lhfUQdQ7ncwUIaauulM+NVxnZiU?= =?us-ascii?Q?U7Q0CYpm18Ws3b19qzhj6nL9JDUkmOBnd13rXL2ZyU+DA990oeYjDN1Tw42K?= =?us-ascii?Q?dXT0cahIkDimhLk3Z1NiCL15KkBdYCCJGmF2OFgesfwB3lqwNeR5d2jbE4XL?= =?us-ascii?Q?+j/qfaUmymp423MUSnD0O+0TJ1vIqsQeC4RX91TADj7eMDN1QGGYEmeS1GTX?= =?us-ascii?Q?PaiM1ez4BO3IgcMBFKeRnwzWsZn5eu1ot7/XhO1G2anz0AFKEx8MVuSM7l8c?= =?us-ascii?Q?FEcYXhkc3juhIZ6ee4qLerrlcFHP/koagSFaeZfNjno4+w9rzWiuw9279DYN?= =?us-ascii?Q?EKWnmJuU44GWd3EaG37AaK92ISDxqYCFAGGVS+t3Wkahx1P+oCTqO9UQhMpV?= =?us-ascii?Q?r5p7Bz6WwyPvKBYimHj61ei2Lo/nV2m7u/KosfB7299bDQz9JrPqg1d0nV2E?= =?us-ascii?Q?60EkzGEI/Le/P9KvhKTmfRCiUwwoGXHcHUKEN5hdkL9hPjA2DMkwz3t4oKtD?= =?us-ascii?Q?fENhePv+A5OuqHCDOWgvVMMqDOqc1BxRM2otrvcC3FCsk1el/Q2k7MQWWeba?= =?us-ascii?Q?AB0ZFtkTrw4R28U4Xt1yngICvwx1BlVqaKBkQvrCEfEgtpODVNAbm3sCUjND?= =?us-ascii?Q?ZpT8o0bD0LPTIaCwJdk94cW35EznVAsEAPwXuv0zfhf38pXbrE/u9y5K5h2T?= =?us-ascii?Q?bfZXfH5NKMOzCBCmjLoSAHw4s/ZYYI3Aho3S0J2biPXMe44llh+prqBKfW1+?= =?us-ascii?Q?ysw53dgU/ABOv1bLWtlrbhQojOumeS5E4WE0A7zffRSQKN8AhZDOwMYFDEO/?= =?us-ascii?Q?iqZFdPtkHlXIW7Dx6Z0DE/JFpHB6pviqMH/wlOLkgOO0Rg0Ex9DvXR2eGqcw?= =?us-ascii?Q?HoazRtC6TpkKjq2JqWacy0f4HwwToV/Qt/+jXL8Qeh/huvMMTPar+m1V1SZ8?= =?us-ascii?Q?A2kYESaTYqm3wbi2vLbx0BitmwU/WoA73pLXeaT9jRpJPjYkozGHO04zUEOe?= =?us-ascii?Q?PmIgg4PLRNhK+guc+XkYg6ACBFPYXWpsTpuIJlRZm4oofF4pAodqIL97r12+?= =?us-ascii?Q?7g=3D=3D?= X-MS-Exchange-CrossTenant-Network-Message-Id: 902afd9d-4db7-4406-db1d-08dced3594f7 X-MS-Exchange-CrossTenant-AuthSource: DS0PR11MB7309.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Oct 2024 16:22:37.0865 (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: MzNcl1ZoD6EgC841nZ/6bhah3uqQs+VK6Y4nQqYQBHixqpV3QZ1WlGTQoCyqYi2+2463Wyi3j3n6+fKF7QiaiPF9OkRtef6q2KQny5Sb9ns= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR11MB6551 X-OriginatorOrg: intel.com X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org On Tue, Oct 01, 2024 at 11:15:07AM +0200, David Marchand wrote: > Caught by code review. > The mailbox message maximum size is larger than the biggest message > to update mac addresses. > Remove the double loop and add some build / assert checks. > > This cleanup also fixes a (never hit) issue where multiple mac addresses > would be marked as VIRTCHNL_ETHER_ADDR_PRIMARY if multiple messages had > been effectively sent. > > Signed-off-by: David Marchand > --- Thanks David. The overall approach looks good. While not familiar (yet) with the iavf to pf protocol and messaging, some review comments inline below. /Bruce > drivers/net/iavf/iavf_vchnl.c | 86 ++++++++++++++--------------------- > 1 file changed, 34 insertions(+), 52 deletions(-) > > diff --git a/drivers/net/iavf/iavf_vchnl.c b/drivers/net/iavf/iavf_vchnl.c > index 065ab3594c..e5113605ac 100644 > --- a/drivers/net/iavf/iavf_vchnl.c > +++ b/drivers/net/iavf/iavf_vchnl.c > @@ -1397,62 +1397,44 @@ void > iavf_add_del_all_mac_addr(struct iavf_adapter *adapter, bool add) > { > struct virtchnl_ether_addr_list *list; > + char buf[sizeof(*list) + sizeof(struct virtchnl_ether_addr) * IAVF_NUM_MACADDR_MAX]; The struct virtchnl_ether_addr_list variable includes a virtchnl_ether_addr element in it, so I think we may have an off-by-one error in a number of places here. For example, should the multiplication not be sizeof(...) * (IAVF_NUM_MACADDR_MAX - 1). The overall logic I think would be more sane if the 'list' element of the list structure was made an undimensioned array rather than being size 1, but that's a more significant change. > struct iavf_info *vf = IAVF_DEV_PRIVATE_TO_VF(adapter); > - struct rte_ether_addr *addr; > struct iavf_cmd_info args; > - int len, err, i, j; > - int next_begin = 0; > - int begin = 0; > - > - do { > - j = 0; > - len = sizeof(struct virtchnl_ether_addr_list); > - for (i = begin; i < IAVF_NUM_MACADDR_MAX; i++, next_begin++) { > - addr = &adapter->dev_data->mac_addrs[i]; > - if (rte_is_zero_ether_addr(addr)) > - continue; > - len += sizeof(struct virtchnl_ether_addr); > - if (len >= IAVF_AQ_BUF_SZ) { > - next_begin = i + 1; > - break; > - } > - } > + int len, i; > > - list = rte_zmalloc("iavf_del_mac_buffer", len, 0); > - if (!list) { > - PMD_DRV_LOG(ERR, "fail to allocate memory"); > - return; > - } > + RTE_BUILD_BUG_ON(sizeof(buf) > IAVF_AQ_BUF_SZ); > + list = (struct virtchnl_ether_addr_list *)buf; Minor nit - I'd tend towards putting the definition of "buf" first in the function, so you could collapse this line into the definition of list on the second line of the function. That allows the BUILD_BUG_ON to stand alone and more visible. > > - for (i = begin; i < next_begin; i++) { > - addr = &adapter->dev_data->mac_addrs[i]; > - if (rte_is_zero_ether_addr(addr)) > - continue; > - rte_memcpy(list->list[j].addr, addr->addr_bytes, > - sizeof(addr->addr_bytes)); > - list->list[j].type = (j == 0 ? > - VIRTCHNL_ETHER_ADDR_PRIMARY : > - VIRTCHNL_ETHER_ADDR_EXTRA); > - PMD_DRV_LOG(DEBUG, "add/rm mac:" RTE_ETHER_ADDR_PRT_FMT, > - RTE_ETHER_ADDR_BYTES(addr)); > - j++; > - } > - list->vsi_id = vf->vsi_res->vsi_id; > - list->num_elements = j; > - args.ops = add ? VIRTCHNL_OP_ADD_ETH_ADDR : > - VIRTCHNL_OP_DEL_ETH_ADDR; > - args.in_args = (uint8_t *)list; > - args.in_args_size = len; > - args.out_buffer = vf->aq_resp; > - args.out_size = IAVF_AQ_BUF_SZ; > - err = iavf_execute_vf_cmd_safe(adapter, &args, 0); > - if (err) > - PMD_DRV_LOG(ERR, "fail to execute command %s", > - add ? "OP_ADD_ETHER_ADDRESS" : > - "OP_DEL_ETHER_ADDRESS"); > - rte_free(list); > - begin = next_begin; > - } while (begin < IAVF_NUM_MACADDR_MAX); > + len = sizeof(struct virtchnl_ether_addr_list); > + for (i = 0; i < IAVF_NUM_MACADDR_MAX; i++) { > + struct rte_ether_addr *addr; > + > + addr = &adapter->dev_data->mac_addrs[i]; > + if (rte_is_zero_ether_addr(addr)) > + continue; > + len += sizeof(struct virtchnl_ether_addr); Where this is the first address you find, you should not increment the length since list[0] is already included in the initial structure size. [I'm assuming here that the message is not meant to be terminated with a special null, or zero address, in which case we need to zero the buffer at the start]. Is it worthwhile splitting this main loop into two - one to find the first element and set it to ADDR_PRIMARY, and then a second loop to add all the other addresses, setting them to ADDR_EXTRA and increasing the length for each one? > + assert(len <= IAVF_AQ_BUF_SZ); > + > + rte_memcpy(list->list[i].addr, addr->addr_bytes, > + sizeof(addr->addr_bytes)); > + list->list[i].type = (i == 0 ? > + VIRTCHNL_ETHER_ADDR_PRIMARY : > + VIRTCHNL_ETHER_ADDR_EXTRA); > + PMD_DRV_LOG(DEBUG, "add/rm mac:" RTE_ETHER_ADDR_PRT_FMT, > + RTE_ETHER_ADDR_BYTES(addr)); > + } > + > + list->vsi_id = vf->vsi_res->vsi_id; > + list->num_elements = i; > + args.ops = add ? VIRTCHNL_OP_ADD_ETH_ADDR : VIRTCHNL_OP_DEL_ETH_ADDR; > + args.in_args = (uint8_t *)list; If you use "buf" here, you can avoid the cast, I suspect. > + args.in_args_size = len; > + args.out_buffer = vf->aq_resp; > + args.out_size = IAVF_AQ_BUF_SZ; > + > + if (iavf_execute_vf_cmd_safe(adapter, &args, 0)) > + PMD_DRV_LOG(ERR, "fail to execute command %s", > + add ? "OP_ADD_ETHER_ADDRESS" : "OP_DEL_ETHER_ADDRESS"); > } > > int > -- > 2.46.2 >