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 3AEA443DEB; Wed, 3 Apr 2024 13:43:21 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 28B8E402CE; Wed, 3 Apr 2024 13:43:21 +0200 (CEST) Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12on2091.outbound.protection.outlook.com [40.107.243.91]) by mails.dpdk.org (Postfix) with ESMTP id BBDE94025C for ; Wed, 3 Apr 2024 13:43:19 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=cuI0alxe/haiiaXCXkTlIzb4Pe4pgHUibgNT339HmQjAEEms64jr09zY0FWLKXRBmj4shZ6Im0rDIhPUkEDJAYYqRbUjF1aJHhq39ViYbHIj+nOwVSU53+itPDJjoDgye804OmJ+TONw1pHIJOV5PNYylZ63hwZICKpBvT7mCGXWT2/tGPur5KUFAysZApS+xqaR3bwjH9rFdgXTFGI73QOkPimgdwXCiWVABSYPiQ4U7nDj5TlolsJZIXFwu0+n5yeyJiHoBnHCZVujoJjpKj7W4O+5pOaQCrBH85deRJOF3kehyQwFg2Qbe/b9ANTjKIjAggM8g3WVsT5G0A5jag== 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=ZfjHCsKe0OAseYkyK+JUbzekZKLNuDHYvAHzzQ3m7DU=; b=jFIlDjalQMuVLBvT/7dlPycsiLzAO7oEVe1a8ZRf6UQJzS69/wK1FGtaGHkCE2J+5AkpUisXEezVjp/GMvKqXV46qztVZucIi/CUrtX1TW1Whp6050JCoVjLARA98SB53UQfVmLpEPjk1UAIMxw0boVvBMMnbTQZSp5TFenAptrtv1RZ3rHPW+VyL+PUqLhcDuHjg625Omdqb/7j1j7RZCUVwREolpakH8GqVrR0LXQvM5ZoX4J8pRVb5XxNBbAhvgtc5ewFm402JxUkxoA5/buppa7VcKdC3AoMqBwB72b1zD2ZtDKvQMGGvo17/nxAEeVsCmcI1/z7YrCSZbI3CQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ZfjHCsKe0OAseYkyK+JUbzekZKLNuDHYvAHzzQ3m7DU=; b=kvCgUMEx/4frh67byGhocNmnEQBXrAABxdk30B5GEnT4mkMwm2vSTxocUMjQ4IQO3y/bvGf2ktw64m3MokH1SDyscMppvkGIwcnQuWnSJghQYh30NP6coej096w/Gw/zZnx5MfE58TS/pznPb/+b402dQgN3mxb2iqyicaf/Qdw= Received: from CH2PR12MB4294.namprd12.prod.outlook.com (2603:10b6:610:a9::11) by MN2PR12MB4272.namprd12.prod.outlook.com (2603:10b6:208:1de::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7409.46; Wed, 3 Apr 2024 11:43:18 +0000 Received: from CH2PR12MB4294.namprd12.prod.outlook.com ([fe80::282f:29d3:cac1:cde3]) by CH2PR12MB4294.namprd12.prod.outlook.com ([fe80::282f:29d3:cac1:cde3%7]) with mapi id 15.20.7409.042; Wed, 3 Apr 2024 11:43:18 +0000 Message-ID: Date: Wed, 3 Apr 2024 12:43:08 +0100 User-Agent: Mozilla Thunderbird Subject: Re: Issues around packet capture when secondary process is doing rx/tx To: =?UTF-8?Q?Morten_Br=C3=B8rup?= , Stephen Hemminger , dev@dpdk.org Cc: arshdeep.kaur@intel.com, "Gowda, Sandesh" , Reshma Pattan , Konstantin Ananyev References: <20240107175900.1276c0a5@hermes.local> <98CBD80474FA8B44BF855DF32C47DC35E9F119@smartserver.smartshare.dk> Content-Language: en-US From: Ferruh Yigit Autocrypt: addr=ferruh.yigit@amd.com; keydata= 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 8Zk= In-Reply-To: <98CBD80474FA8B44BF855DF32C47DC35E9F119@smartserver.smartshare.dk> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-ClientProxiedBy: LO4P123CA0272.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:195::7) To CH2PR12MB4294.namprd12.prod.outlook.com (2603:10b6:610:a9::11) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CH2PR12MB4294:EE_|MN2PR12MB4272:EE_ X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: W1k4roj98aVbMvMO4GqP0n2y/RjuFuJ8QU6bSybbrZ5IUi3scWyMbIvmdYZUWD+H7VVqH29ddpNlANIzhgTf8ZQWcsWhxmD4u1IfONCCtcOjNhjC1TBHxKLrEDIkXvlHC0pJqyO8tLnuf3q8XAei4InzGZXet8hW5ogwpvRaoXnm+rwBS8hqg/dAl56rzfk2+0SjQbZ/Ob3hS0nhfp4RlsEdQISKLjgGzFZmpCljpkvWY2cZnoaKHkaxmyoneYgX6B2HNtjNUvBhUB+zZg3r6usInKswhRLE/suDBOZXxRPwQXey4AwIDrYfQxXiUTegjD7K8/iB33X/87o9o2zu7oNPsfuRDFXRV31uSB9+V7O+sSSlX7Zb8vSmSceYYdgO2HqatcVJKTVEox4wgZztQJ+JxmpVHdn2e+PDi9rUijBZArF7wIQi95/Ke49FYnzR4ezZcHRZHMDldZatLm/2/mm6jgNsv+JRiCdbrzFN9/M4FpK9s1MVs+aCx/7U77mx04HKxdRmzj6qoWOGPPalbeNc38DmGOP92Jc4e8OAAzl6Gljee4JD9Z4PUb135TpfkpgMUssmVdSwEK7VITcEEAtHBKHjlsu4fBYXKgWDKMsgAPH8d1qTQnsBPT7CD1NB+0N8Ez+8s7LcSJXPUPI3qFmt9nbal+Jsdkr7cBzDy60= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:CH2PR12MB4294.namprd12.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(366007)(1800799015)(376005); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?cmFuNm1VY2FRY01tdDRWT2s0Y1B4Ui83VHNMMStIcE11Z3lQcWNUcGhrb2FT?= =?utf-8?B?M3hBdUdGdExCcU55clhuTDE1cGdpWGY0T3VTQzFJL29PVi9oRkppMWpWbTJs?= =?utf-8?B?cS9XQ2JZaHAyOHloTWJER3VicVQ5Z2Y2VC9jZGRVWnpzeGMxVnp3d2hSeU1p?= =?utf-8?B?K21sMG83U0dWYVhtM0NzYXpjMG1JcFRvSWRaRGEraHdyNk13V1hyOTJaN2Q5?= =?utf-8?B?TVM3NW1WZ3B5MmM2VzNZeUZCV0N3UUJyYkJuTFdBUHVwV0ZmeHVwQW9WMUgr?= =?utf-8?B?bGZRV0VndEpVRUc0K3R5TVlGbGtGaHo1Y3lNVWpEY1RGWThseWhWMEgzVkRX?= =?utf-8?B?Z2d3STh6NGQvRXhKbW1DTWgycW42YU1JTlB0eWlEV3J2WGg4SWJEbk90eUpj?= =?utf-8?B?aTlSYW1QNVJ6QWRXQWQrS0JySW12SXpLdW84a3hBTDdlWDV4MyswR0pkV2Rl?= =?utf-8?B?by9TS05STm9lZTJKbmRVdHBzdVFSSDF0ZWduek1LUnBOdXVaczI0eUJJVmlQ?= =?utf-8?B?NWIwZkVPYXV3cXFvVEJoa3JEWTFXblB0dnZIdlJDUE9sNXcvSTFRWUFFbWk1?= =?utf-8?B?c0U3Rnl1Q2tqVjQzcDVkZTZxT1NqK2ZXWnpFMW0vVllxZ3pEWVJ6UThPem5V?= =?utf-8?B?OXdEcU5tenYvSjh1aVpRajNnbmVIYmFVMVdYOFN0M2lVTzVQd2RPbThWanBt?= =?utf-8?B?eHZBL1VndFZkd1REQWdEQWRPRXVsSVJsZFdDOTR5djdtbDRRalBKbjZiUFN4?= =?utf-8?B?ck8zc3JiSzQwSFdVS2tKdlMwZ0RvYjVxTmlrOWxCK2FhMGlWSmV2ZFRMdVVN?= =?utf-8?B?ZU81aS8vWnZDa0M3aldNejVHVTRTMDF6ZGE2RDIxakRud2RDdUFMYkpUL0lm?= =?utf-8?B?RHpXSU5DVWszanR4NytJUWw5OHBOUWY3eklLb3hOTis0eHRoaTh3NkpyWUFh?= =?utf-8?B?YkFXbVBnVUdnWjBsbTIyQThtNzB1aHgzZHlnc3VEZjk4bnJ0UUdDQmFhRGUz?= =?utf-8?B?eFdJMXd6T2lHbDBXMGxFZjJOWjN1R0QzYW5udGtEbnV2QkhiNkllUHU5bUFF?= =?utf-8?B?K0p6Zm5PbzYrdWFRNG5lbVZwVSttUjFiT1huOFE3d1ZXWXRER1AvSGJSTUxX?= =?utf-8?B?Y0FmVUpHNm1GQVY1TmtWK2dBODVPZkF2M040WG9WT1hTdGtnVU5qeDJuWExt?= =?utf-8?B?U0RtdzE0c0RKZG1UbG1vV2R6VDY2cXJyZGx6YTBnNHF2Vit5bjJobUlZMW1U?= =?utf-8?B?bjh0K0ZyNkl2eXNmcjg1M0dyNUxSbE10dXVPV1BXQ2pTZWNieVN3elF1QUUx?= =?utf-8?B?WWwvajQ1VXRRZys5MVl4WkRoVUFtbzJpVVM5SHppdzBxalNwMnJEanRHK3BO?= =?utf-8?B?RWxoeW5QQ08rSUJoT1A0Q2V5WWhKOVVIclhOZnBVVHhSSnFhYXhyRG5OS2Q0?= =?utf-8?B?RjFiSDRtYWlVSDlXZVJUaERZcjBwYXlKci9YN2lIbVF2MGlXZDNkTmRSTWho?= =?utf-8?B?c2d3UGh5SFpXTUpvWnpvTzI3Z2M1VlRyQkorYUc1Z2xhbFViaFZlQUU0N01h?= =?utf-8?B?UmVwL00yejZNSU5ZTCtvRDJwQ3p0TllYbkd4Yis5bENzMlEwaWVQVm1PUUcv?= =?utf-8?B?QWdpU1E3OWs0ditZeklmRUdJdGZUL2MxMDczV3NweTlYbXB6YkJTWTE3bkpW?= =?utf-8?B?TWhxYTdDNnh0NW5VdlNWZ0JxaUpoLzIxUFhDeWZUSWtSK3IrcnlJaGFsMjZP?= =?utf-8?B?M3VrYmFxMUExZmRYQXpUR05nVW9xcW1obXhVTXJrb2NjdXBUUU5FK2pWUmlv?= =?utf-8?B?SHdTUkxRNG9VUk5kRHpZelZxblBPN3VneE9CS1hFUDRkSmNONUM5M3oySGxR?= =?utf-8?B?RmgvTHRJRnRvZ0JyWTJycG1RcmhwQ1A1Q1ZsUGg4Zi8zeitvMnNqRlhlSmRw?= =?utf-8?B?OFNkUFlVekh3WUV1dEc1eDY0SnJlWEgxMUw5V0hYeU9VYWJmQjF0V3c1d2c5?= =?utf-8?B?eXIwRDB0dmcxc3dPNmdhVmtqRjVid1o4ajBWV01meUFoU3l5VFcvMjZCMXRI?= =?utf-8?B?MU5sZVR4R3RqYm1hV1pTeFhQZHJYWHdkNXJ2UkVvZ0hOdHVWaFZDTEpZcTdt?= =?utf-8?Q?zaEUUOj7zkOmjkZ+QmbHfr7Qa?= X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: 27b567f8-2f76-4629-82f7-08dc53d3412b X-MS-Exchange-CrossTenant-AuthSource: CH2PR12MB4294.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Apr 2024 11:43:18.0101 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 9yw00xOEg5Wezhn0i9TTLCCsugpsFIg62ENv0rsqF4PUWpClz4jm+cxi/MWWH3cp X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR12MB4272 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 1/8/2024 10:41 AM, Morten Brørup wrote: >> From: Stephen Hemminger [mailto:stephen@networkplumber.org] >> Sent: Monday, 8 January 2024 02.59 >> >> I have been looking at a problem reported by Sandesh >> where packet capture does not work if rx/tx burst is done in secondary >> process. >> >> The root cause is that existing rx/tx callback model just doesn't work >> unless the process doing the rx/tx burst calls is the same one that >> registered the callbacks. > > So, callbacks don't work across processes, because code might differ across processes. > > If process A is running, and RX'ing and TX'ing, and process B wants to install its own callbacks (e.g. packet capture) on RX and RX, we basically want process A to execute code residing in process B, which is impossible. > Callbacks stored in "struct rte_eth_dev", so it is per process, which means primary and secondaries has their own copies of callbacks, as Konstantin explained. So, how pdump works :), it uses MP support and shared ring similar to you mentioned below. More detail: - Primary registers a MP handler - pdump secondary process sends a MP message with a ring and mempool in the message - When primary receives the MP message it registers its *own* callbacks that gets 'ring' as parameter - Callbacks clone packets to 'ring', that is how pdump secondary process access to the packets > An alternative could be to pass the packets through a ring in shared memory. However, this method would add the ring processing latency of process B to the RX/TX latency of process A. > > I think we can conclude that callbacks are one of the things that don't work with secondary processes. > > With this decided, we can then consider how to best add packet capture. The concept of passing "data" (instead of calling functions) across processes obviously applies to this use case. > >> >> An example sequence would be: >> 1. dumpcap (or pdump) as secondary tells pdump in primary to >> register callback >> 2. secondary process calls rx_burst. >> 3. rx_burst sees the callback but it has pointer pdump_rx which >> is not necessarily >> at same location in primary and secondary process. >> 4. indirect function call in secondary to bad location likely >> causes crash. >> >> Some possible workarounds. >> 1. Keep callback list per-process: messy, but won't crash. >> Capture won't work >> without other changes. In this primary would register >> callback, but secondaries >> would not use them in rx/tx burst. >> >> 2. Replace use of rx/tx callback in pdump with change to >> rte_ethdev to have >> a capture flag. (i.e. don't use indirection). Likely ABI >> problems. >> Basically, ignore the rx/tx callback mechanism. This is my >> preferred >> solution. >> >> 3. Some fix up mechanism (in EAL mp support?) to have each >> process fixup >> its callback mechanism. >> >> 4. Do something in pdump_init to register the callback in same >> process context >> (probably need callbacks to be per-process). Would mean >> callback is always >> on independent of capture being enabled. >> >> 5. Get rid of indirect function call pointer, and replace it by >> index into >> a static table of callback functions. Every process would >> have same code >> (in this case pdump_rx) but at different address. Requires >> all callbacks >> to be statically defined at build time. >> >> The existing rx/tx callback is not safe id rx/tx burst is called from >> different process >> than where callback is registered. >> >