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 1D996A034C; Tue, 22 Feb 2022 23:24:23 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id B0CDA40DF6; Tue, 22 Feb 2022 23:24:22 +0100 (CET) Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by mails.dpdk.org (Postfix) with ESMTP id 787CE40DF4 for ; Tue, 22 Feb 2022 23:24:20 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1645568660; x=1677104660; h=message-id:date:to:cc:references:from:subject: in-reply-to:content-transfer-encoding:mime-version; bh=H4KW5NVUb2756V/OYC9Nq9LIzec+mRqomnzBK1lPcK0=; b=HuldY7gLwGH9s6UYoNTgzeTCEUPKZGKwIA1drheIpWdHr7PEW4JIOcU0 JO3yZa+TjLdishhryiDe7GnUHA1mdOH0vKt5i9d/IOHc+Mbg5Va+fPCPq L/n/7M595p+UVbma95aL1xRJ2dhltgkWaBMioCymJHuPVL2Nu+ES6uS2e zFx3TWsKqgV/83VDhLfVqDuD6Zf+yl5XIoH2c+h/OT+EdQZ31VyoGr0+M A8PPRtB8yC486hiMjKPsfcAv+b0KNuBxgnygvAoBTbfEuqi1VhUfUFO5Z PdAOr9oAuezerxntgLgjVVCw7NwtuKzXUtxAoqDE4j9DB3tNmEMtKk77q w==; X-IronPort-AV: E=McAfee;i="6200,9189,10266"; a="251748060" X-IronPort-AV: E=Sophos;i="5.88,389,1635231600"; d="scan'208";a="251748060" Received: from orsmga002.jf.intel.com ([10.7.209.21]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Feb 2022 14:24:19 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.88,389,1635231600"; d="scan'208";a="505697820" Received: from fmsmsx602.amr.corp.intel.com ([10.18.126.82]) by orsmga002.jf.intel.com with ESMTP; 22 Feb 2022 14:24:19 -0800 Received: from fmsmsx607.amr.corp.intel.com (10.18.126.87) by fmsmsx602.amr.corp.intel.com (10.18.126.82) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.21; Tue, 22 Feb 2022 14:24:18 -0800 Received: from fmsmsx602.amr.corp.intel.com (10.18.126.82) by fmsmsx607.amr.corp.intel.com (10.18.126.87) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.20; Tue, 22 Feb 2022 14:24:18 -0800 Received: from fmsedg601.ED.cps.intel.com (10.1.192.135) by fmsmsx602.amr.corp.intel.com (10.18.126.82) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.21 via Frontend Transport; Tue, 22 Feb 2022 14:24:17 -0800 Received: from NAM11-DM6-obe.outbound.protection.outlook.com (104.47.57.171) by edgegateway.intel.com (192.55.55.70) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2308.20; Tue, 22 Feb 2022 14:24:17 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=m4xlLOjeqeLtaMxyyj/UHqtePkd9Gkxj+fC1XMH5DqWT157WuGeTvS0t3M1K5/+nG8ChnwkCP8ljxWfGIMjGbenu264PFOlauZLc3hOzQROmWoBK16kAMFMJX5UKNbONaivlmV7wnT/jvlyeYmiPlBvoQ+I44hE/z2R5nXAfAbKfC5wuMvX9Xat/E5RjMcUGpowH3b09TlOSSsM3FDqrSW4mMSZy4dpKWUfoOuw/y9IDuh0Qy2cECyI+v/thHcy3LsOU8N6JGALeBDnCLEhLxzv8lmNnpVEvOyH+TWw0LbCDLR7J+GWYSnCtPBJ8Ee98Uhey2j8SIoH93FGt6lC2nA== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=CsEh2AlZ1E2CdiUfi3THd2Uv4k6SEJu1a3HjHQ3Xrh8=; b=oZG6hN4QX7Zp3LNLj8lnk+iEEK/Rksnh5y8TNQKvVcrwhEuC94hlFU0sNFgcGSJBBQnwT52s5MFmXiaJq750WWjqoQlnjpXC/aXDMKOl+rVDtvqBIeXaJ580ikqEAoLUH+jfQcWiBUCTTdGJaJGOrnQOMmtG9cJT1I8Kk1h9muvE2HXpEOZ+iMeSSintLqOHkd2wdajvQsBP4zgJZ1zI6yQdAgkeE5LyPgD5ZHg0AnPAEYXQLKg+2J/iYFxujGCoK7pUcdzIE3P90rOaqFg+4qB/DQA24VDW9K8JsbO3o5Ym2aTiJ2wNcTJV5hkX3WrpQENoiw114goso0oiCqZvqg== 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 PH0PR11MB5000.namprd11.prod.outlook.com (2603:10b6:510:41::19) by DM6PR11MB3050.namprd11.prod.outlook.com (2603:10b6:5:71::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4995.25; Tue, 22 Feb 2022 22:24:15 +0000 Received: from PH0PR11MB5000.namprd11.prod.outlook.com ([fe80::98be:5506:5020:28a2]) by PH0PR11MB5000.namprd11.prod.outlook.com ([fe80::98be:5506:5020:28a2%4]) with mapi id 15.20.4995.027; Tue, 22 Feb 2022 22:24:14 +0000 Message-ID: Date: Tue, 22 Feb 2022 22:24:08 +0000 Content-Language: en-US To: Michal Krawczyk , CC: , , Stanislaw Kardach , Dawid Gorecki References: <20220222160634.24489-1-mk@semihalf.com> <20220222181146.28882-1-mk@semihalf.com> <20220222181146.28882-11-mk@semihalf.com> From: Ferruh Yigit Subject: Re: [PATCH v2 10/21] net/ena: proxy AQ calls to primary process X-User: ferruhy In-Reply-To: <20220222181146.28882-11-mk@semihalf.com> Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: 7bit X-ClientProxiedBy: LO2P265CA0197.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:9e::17) To PH0PR11MB5000.namprd11.prod.outlook.com (2603:10b6:510:41::19) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 44a76dea-dff4-44df-dae2-08d9f6520ee0 X-MS-TrafficTypeDiagnostic: DM6PR11MB3050:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 1jQ8ngsAu+GnZJjvHQZ7tIAWmX7kNZFJY3ZbncmhXufNKzYFM1lm1Q9nWng58j9iJ96RdlSQo1k/gLfawSmyc2Ky9FE699ROSgtVszY5HFNjxHHDHdvdCDsTQCTBHAoy4yF/qP12xi3SN6GgxxLpo8qpSG5nPpFMK1Yep+Z2jWIAPvpPJJoIn/xQpuVd1QCzvYGuinMGE5gZYA308dyv+5Zm2po4l1HEnmt+60MrbO3R5krttcQjx74HOuGMtOsEJLbMhsNNHgqhiVWUYwvzJXPY/PLxsGf0dI4xS5ZMA92oCA0f4rbcIN8HAyYaZ6X5sfTv5jGw6A2zYit5VIWoGMPCFij/kpYftnrT1uF6ZETqbsFasQLTHK/imd3x7hkHsU6ir4KoYaraEwkEqPOmk3eXHWho/ryL7QUfNNPukExLg+aGzSN+zE/hwkMjdiIOYczOvfZmZNnBOsz+lPpQUBlhmRfh7T27M7VpJVfQHPrXS7KLC8r/wzYjmj8TI6dzlW+RLelLokpx2QRUJjWw6MsNswrTBsyzFS3AOQP+sr896pTyEEMuD3bPFOebmu2kRjto0HtZdMVyzYmtrJz5OcFsnmqP6s8MQUb3jiIdivCFH/EylhxPFhJA4PHAKp2dTKR+GlR2koKDBg21LHDqMrpRVBket4uxy8I5Vx9dKvPgy6fzkVRk5FBTkHk/JadbpVqUlsbQdefHil+M8vbyQw== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PH0PR11MB5000.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(366004)(66476007)(6506007)(36756003)(6666004)(44832011)(4326008)(2906002)(66556008)(6512007)(82960400001)(26005)(31686004)(31696002)(186003)(86362001)(8676002)(508600001)(6486002)(53546011)(38100700002)(2616005)(66946007)(5660300002)(8936002)(83380400001)(316002)(54906003)(45980500001); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?VjVWVUV3dFZKNVVWOS9nTEdUZmc5enpCZ004c1pQejN6VXk1Lzd5blc1U2Fy?= =?utf-8?B?MXZxdFQwNzMyU2pYa3kyd0xYK2lFUU5ERDlaaGZNa00rYk5KV0w5cnF4SC9T?= =?utf-8?B?T3VXQjcralkrN1dPai9hYXE3c3BBbnlHZTBpalFvYW4xZCsxNmJIOTNpVTZF?= =?utf-8?B?WFV3NW9hdUlKbUVmTGR5NGpNZDJqcTJzaEFWTkdWazdHTm5Tdnd6Z09IM2tN?= =?utf-8?B?V1JjR0IyNUNacUdwRmg2MGRncms2ZUQvVzU4ek1xbXpibmFqMTNaRFZMdVpE?= =?utf-8?B?Qm5iNGxYckk2c0JQc0U1aElOTHVBajJEV3MyVlk2aGlDUFpHL2UzWGNtWmN6?= =?utf-8?B?UzJkaVRKaVNrN2xSTUVQU2l1TVh2MTdvb3A3TjYxVitiWVR4b2dqUkdpWC9L?= =?utf-8?B?Yi9DNXRiOGpKcTVHSlVpYnBaWGo5SDR5OHdQYWVIYjRHWS9TeDU5azdPT0J6?= =?utf-8?B?Wm84L2xCQ2Rta1hNUUwvYXhPeS9iTUo0YmdwVk91Ly9UVS9yWjBURGxNbmEx?= =?utf-8?B?QTAxdVN4SjIvYmNWNGtzVWtFOTlrYy9HaTF1R2dYUUhwVWtvay9TMU5ZUDRh?= =?utf-8?B?ZnFhY2RJRUNXYU9mVDlUbUIyVTl3L2dPOVRPeDdmNzd4M29xWmtxMVQ2VDk4?= =?utf-8?B?Tkk1NWJqNWJDbHZtYjQ2eXV6K3JiS3pjbWZVSW5BN2Y3dk55QzlZaFZjMXJB?= =?utf-8?B?SHJaMG9yZE5EUTVGT2dBMXZkY2JnSmNIRHVDTnkvRHJmTGtoMnBaaytCcUJI?= =?utf-8?B?a0RhT1NNbm5CQkRMMXpnc21seW9KRHQxaU5Jekc2VUVjRyt2bm5paE1HU3o1?= =?utf-8?B?SFNtbVZtVW1UZkRTYXNHb0h0S0RzbTBrM1RtdTVXWFVCTXpsNHk2Y3ZwZHF3?= =?utf-8?B?RHB6QUhrS1JNWldWbTN3MENGamJUZEk2ZWFBcjErZ0ZYa01UOEhkdVF3eFBR?= =?utf-8?B?b3VPYlBhOHhTTTRTS3NWMUI2KysrRGIvRCtHRkVuRnBVUEZkaGtYcGh6WEFM?= =?utf-8?B?ZlpscmRLWGJ0OXVhVUN6QU1YNTJvd09mRk1kTFZPQyt5cG1sUTFEQnk3T1pT?= =?utf-8?B?SHZUWEk0czBVVEtPQUJJeEw5bDcvSDlkQ1o0WlJaK1V0SFBxUXVUTkRRMmc0?= =?utf-8?B?TXFtaFg5dzVGYkQzcVF5d1AvMjcwWStxY0NHby82ZHBKYWdFNDZ1aFpKK1A1?= =?utf-8?B?UUFWd0hpQWJMTHMvTXJPa055bXZaTVJzRFBWUTF3Y1RuS1pkaU1aOWlGZmVk?= =?utf-8?B?OXROblU2bFE4Z3AwYXYzSnNYQi9ZWi9LSTZJVjk0WEtGbDlMU3lFMzVLdWFO?= =?utf-8?B?Vkx1dFBxZDhPU2ZUeno0S2hsRzlRMXNlUGhucitxNmxiSVhGY0JhRFFOZitk?= =?utf-8?B?bDBiaXNLRVZYaThyREpkSUorRU9DemxTVWkvbEdGaGo3UW5RaUpUNFhnK3k0?= =?utf-8?B?ZGNxdTdVdWdFamtSRUt4cTZDR2FLMjkvTndGdy9hMWgzVlRLQ0JNcWJjMkMr?= =?utf-8?B?bi9ELzNsSUxuaDYySlZxNm15MEtvR2dDMVJ0dEhQaTY1alBlb3R0TDl2NUcv?= =?utf-8?B?YXNoWGFBTUZaaXljeDREWGZra0N0OXV3MTVxbWVYSHhzVlBmZ0FLRHJES0U2?= =?utf-8?B?SGlGSUcxZlpoUzRUMWNTZ21VUG1pMHNpbWdwd0RNU0YyWnBCMytLTGhOeDQv?= =?utf-8?B?WG90Q2I4ZmQvSHZxWGhSNDZQbkxGR2lpSzc2bWdJVTRCRjBwbHo0ejkzdkdm?= =?utf-8?B?dk9tUVBJZGoyU0MxS2Z3U2YyWmgzZWExMVBLa0JKN09tOFF3elRrQkpzWkMr?= =?utf-8?B?MFhYYjVwSUhTbVJXbnNqMHRmT2ttcTNXeHBWUThDU1p0QmNHNnRuT2w5bnhn?= =?utf-8?B?VzBuK01mdmFwcFpKcUlGZStwY25ZeEFnc2pZbm5DSXpxZlVKc1VPdEkwTmJ0?= =?utf-8?B?UWRmbGx5Nzl6NjRjY2RES21tOVowcEluVk9DMlUwRUtwa0RSeFhscHpPWS9D?= =?utf-8?B?THNad0dEenEzMDAvcXZZVG8wQnQvN1I5QVIvR3dHVzFCSUMrVmxqb29PeFVL?= =?utf-8?B?RnRCSUNhTndzc2x2eFN5TTM1WXJIR1JSQTFqTDNuaWxGQjIwYkZvSWhWcDhj?= =?utf-8?B?aHdxdXM2K3dtMEVCTUJ0eDRmdUQwUzZ2SkRoTkVVcEt2ZUJ6VGdTK3M2SGNn?= =?utf-8?Q?WmXanicuqIjYfI7HkgnlmR4=3D?= X-MS-Exchange-CrossTenant-Network-Message-Id: 44a76dea-dff4-44df-dae2-08d9f6520ee0 X-MS-Exchange-CrossTenant-AuthSource: PH0PR11MB5000.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Feb 2022 22:24:14.9035 (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: sQJZS4njo92dcrYeunAjfB37mSsFbKWn/JOWcisAABwUp5Mtv6BPT5i0GIZ0mjomGsjzbH3sdLKi8Qx2VAz0YQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR11MB3050 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 2/22/2022 6:11 PM, Michal Krawczyk wrote: > From: Stanislaw Kardach > > Due to how the ena_com compatibility layer is written, all AQ commands > triggering functions use stack to save results of AQ and then copy them > to user given function. > Therefore to keep the compatibility layer common, introduce ENA_PROXY > macro. It either calls the wrapped function directly (in primary > process) or proxies it to the primary via DPDK IPC mechanism. Since all > proxied calls are taken under a lock share the result data through > shared memory (in struct ena_adapter) to work around 256B IPC parameter > size limit. > > New proxy calls can be added by > 1. Adding a new message type at the end of enum ena_mp_req > 2. Adding new message arguments to the struct ena_mp_body if needed > 3. Defining proxy request descriptor with ENA_PROXY_DESC. Its arguments > include handlers for request preparation and response processing. > Any of those may be empty (aside of marking arguments as used). > 4. Adding request handling logic to ena_mp_primary_handle() > 5. Replacing proxied function calls with ENA_PROXY(adapter, , ...) > > Signed-off-by: Stanislaw Kardach > Reviewed-by: Michal Krawczyk > Reviewed-by: Dawid Gorecki > Reviewed-by: Shai Brandes <...> > + */ > +#define ENA_PROXY(a, f, ...) \ > +({ \ > + struct ena_adapter *_a = (a); \ > + struct timespec ts = { .tv_sec = ENA_MP_REQ_TMO }; \ > + struct ena_mp_body *req, *rsp; \ > + struct rte_mp_reply mp_rep; \ > + struct rte_mp_msg mp_req; \ > + int ret; \ > + \ > + if (rte_eal_process_type() == RTE_PROC_PRIMARY) { \ > + ret = f(__VA_ARGS__); \ > + } else { \ > + /* Prepare and send request */ \ > + req = (struct ena_mp_body *)&mp_req.param; \ > + mp_msg_init(&mp_req, mp_type_ ## f, _a->edev_data->port_id); \ > + mp_prep_ ## f(_a, req, ## __VA_ARGS__); \ > + \ > + ret = rte_mp_request_sync(&mp_req, &mp_rep, &ts); \ > + if (likely(!ret)) { \ > + RTE_ASSERT(mp_rsp.nb_received == 1); \ 'mp_rsp' is not defined, I assume intention is to use 'mp_rep'. Build error can be reproduced by enabling RTE_ASSERT (by setting 'RTE_ENABLE_ASSERT'). > + rsp = (struct ena_mp_body *)&mp_rep.msgs[0].param; \ > + ret = rsp->result; \ > + if (ret == 0) { \ > + mp_proc_##f(_a, rsp, ## __VA_ARGS__); \ > + } else { \ > + PMD_DRV_LOG(ERR, \ > + "%s returned error: %d\n", \ > + mp_name_ ## f, rsp->result);\ > + } \ > + free(mp_rep.msgs); \ > + } else if (rte_errno == ENOTSUP) { \ > + PMD_DRV_LOG(ERR, \ > + "No IPC, can't proxy to primary\n");\ > + ret = -rte_errno; \ > + } else { \ > + PMD_DRV_LOG(ERR, "Request %s failed: %s\n", \ > + mp_name_ ## f, \ > + rte_strerror(rte_errno)); \ > + ret = -ECOMM; \ > + } \ > + } \ > + ret; \ > +}) > <...>