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 94B2D45945; Mon, 9 Sep 2024 17:16:51 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 8230A40E4F; Mon, 9 Sep 2024 17:16:51 +0200 (CEST) Received: from mail-ed1-f42.google.com (mail-ed1-f42.google.com [209.85.208.42]) by mails.dpdk.org (Postfix) with ESMTP id 195C440291 for ; Mon, 9 Sep 2024 17:16:50 +0200 (CEST) Received: by mail-ed1-f42.google.com with SMTP id 4fb4d7f45d1cf-5c3cdba33b0so4879456a12.1 for ; Mon, 09 Sep 2024 08:16:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pantheon.tech; s=google; t=1725895010; x=1726499810; darn=dpdk.org; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=/o7loyQ2VKNUiL6RPsAMJ6mF0AjeNjSFP6VqpKcD9DM=; b=GOVFpIyTpBcIFper6fiJK4NAaIJZb4uLybnvVG6+Q4rJwEGFhVbxpTUy9am3TOkM3q vb+bBPwkg1aEWk+1J0OpghE/BulJYiQ/xlKzDQmFW8W3wtPjqCwFaAW7gtFU+HzNJQD3 JruLhnON+FO9kaaOkUdRXI4WS9XSb1dnQPoisTj0jFXxfxY5Ng/y4solszN4yyhx4FWR aTxVMcovVRLDXZPgF1T/T6LGEO3IPMYoE5RjqJBaD0xxo5h5/zNqGNEWo2aZjslShkvB rbP9Z7M+xusdqFtDmoX5K1e0oV9EakkBgyvaUsEzv7aw8ndqfLnrWC7Jy1G2Nk3hAdHb YTeQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1725895010; x=1726499810; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=/o7loyQ2VKNUiL6RPsAMJ6mF0AjeNjSFP6VqpKcD9DM=; b=MZIVZ+NzN2E21dRJDlF3KPUi0q0hQG6YQW0q29UjP2pOlZCnsc7q+oGyt3u7c+HHCt V6Mqbk4+aVNnPXuRtAvP7aAJySY9tiPTjwVhiWsZxPIoLeePVExSr83I9rVDcgIu1H8Q Psxe7aiS+AQLt95BF5nHQJ+FWl+L/LCrEV+I2FtFxxcMXW/7iVIE+dO3Syh4HEK8ev1J nWdKBMhHBSF4QCuprqXpDcWyZpMLzHjd0p4s+7taOWmEu6GsdmwJyCW52yfhem25cdVN KLpw6N0+cM09reaJKBm1LaJqUQYBqYxzs+0hQp35HoqP2E5klkHFEXIfMyZ6b1bDfRbP 4Vhg== X-Gm-Message-State: AOJu0YzTDYqt1qxC6nG23tZV+niQpSgcPWeQGq64HLKLYxxllSRJ+Lqr Bzp/cz7ufV5GBhMhS+KrzZN1LyXKmPDKFDmHP3VQWL6M3SfUwjqcVic/8otIFn5ChDoat1g7JlH mQHw= X-Google-Smtp-Source: AGHT+IH2LCswBjy/9DSu7gcJUXH2kY3O+f4SBkQnhhReJPl0qwEwp7xi6/SjPWoUYRQXkMkjsLIJRQ== X-Received: by 2002:a05:6402:13d6:b0:5c3:f4ad:2304 with SMTP id 4fb4d7f45d1cf-5c3f4ad2476mr4625554a12.10.1725895009311; Mon, 09 Sep 2024 08:16:49 -0700 (PDT) Received: from [192.168.200.22] ([84.245.121.62]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-5c3ebd76ef0sm3124135a12.63.2024.09.09.08.16.48 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 09 Sep 2024 08:16:48 -0700 (PDT) Message-ID: <480e75e5-3efb-4392-b1f3-b7a59f011fd3@pantheon.tech> Date: Mon, 9 Sep 2024 17:16:47 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v2 4/5] dts: add ability to start/stop testpmd ports To: Jeremy Spewock , Luca Vizzarro Cc: dev@dpdk.org, Honnappa Nagarahalli , Paul Szczepanek References: <20240806121417.2567708-1-Luca.Vizzarro@arm.com> <20240806124642.2580828-1-luca.vizzarro@arm.com> <20240806124642.2580828-5-luca.vizzarro@arm.com> <89d39e22-ca0a-43a9-bc42-6c833a7cd8e4@pantheon.tech> <6b1e1e14-41f2-4303-99bf-24d95c1ed600@arm.com> Content-Language: en-US From: =?UTF-8?Q?Juraj_Linke=C5=A1?= In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit 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 9. 9. 2024 16:20, Jeremy Spewock wrote: > On Fri, Sep 6, 2024 at 12:46 PM Luca Vizzarro wrote: >> >> On 23/08/2024 13:16, Juraj Linkeš wrote: >>> As Jeremy mentioned, adding the verify argument may be worthwhile, but >>> maybe only if we actually identify a usecase where we wouldn't want to >>> do the verification. >> >> Yeah, as I pointed out, it feels unlikely to pretend that they are >> started (or stopped). I think that could cause my unpredicted behaviour >> and confusion. But also as said already, it can always be added on demand. >> > > I agree that we can save this as something to add as we need it and > that there could be some confusion to pretending the ports are in a > certain state. Since we actually save the state in testpmd, we > definitely want that to be accurate. The main thing I was thinking > about this for however was less about the state tracking and more > about what the expectation is for developers when they specifically > specify they do not want a method to be verified. There aren't many > cases where you wouldn't want to verify the outcome of a command, but > I would imagine the two reasons you would do so is either you don't > care about the result, or you specifically don't want to be disruptive > to the rest of the run if this command fails (like if the framework > has a testpmd shell running for some kind of process but doesn't want > to end the run if it fails). When we enforce the verification of some > part of the process like stopping the port in this case, that > assumption about not verifying changes. The second reason I mentioned > is why I believe capabilities checking specifies no-verify when it > updates the MTU, for example. I imagine we don't want the test run to > end if a testpmd method fails its check with capabilities, we would > want the capability to just be unsupported. Of course the developer > could catch the exception themselves, but in that case I think it > would make more sense for catching the exception to be the primary way > to avoid verification and we could just remove the parameter all > together so there isn't this edge-case for avoiding verification with > decorated methods. I guess even the static parameter that specifies > whether or not to verify doesn't really address this problem either, > haha. Maybe it would even make more sense for the decorator to assume > that it shouldn't throw an exception if the ports state changing > failed (but still avoid updating the port state) and let the verifying > process be completely down to if the method being decorated succeeded > or not with the ports in whatever state they were at the time since, I > would assume, if the ports fail to update their state the method will > also fail anyway. > > All-in-all however, there likely won't be many cases where the ports > actually fail to stop in the first place, and not verifying in general > is uncommon. If what I mentioned above makes sense and we're fine with > the slight change in thinking, I think it is fine to merge this and > just keep in the back of our minds that this is the case, and maybe > either document somewhere that you have to catch the exception with > decorated methods, or just remove the verify parameter from decorated > methods all together and enforce that they must be verified. As > mentioned, it's not like we are forcing ourselves to stick with it, > adding the parameter is pretty easy to do on demand. > These are pretty good points. It makes sense to remove the verify parameter and if we don't care about the result (or the result should not be disrupting), we just catch the exception. This patchset is not the place to settle this, so please open a bugzilla ticket for this. In the worst case scenario we just close the ticket, but it's good to have these thoughts in the ticket as well. >>> I also have two other points: >>> 1. Do we want a decorator that does both - starting and stopping? Is the >>> idea to have all methods that require a certain state to be decorated >>> and in that case we don't need this? E.g. if there are multiple >>> configuration steps, only the first one stops the ports (if started) and >>> we start the ports only when a method needs that (such as starting pkt >>> fwd)? I think this workflow should be documented in the class docstring >>> (the important part being that starting and stopping of ports is done >>> automatically). >> >> The way I envisioned these decorators is by using a lazy approach. I >> don't think it may be right to eagerly restart ports after stopping >> them, because maybe we want to run another command after that will stop >> them again. So only start and stop as needed. Ideally every port that >> requires a specific state of the ports need to be decorated. I went >> through all the methods in the class to check which would and which >> wouldn't, and it seems alright like this. >> >>> 2. Do we want decorators that start/stop just one port? I guess this is >>> basically useless with the above workflow. >> >> Would it actually matter? We are not really using the other ports in >> parallel here I believe. May bring unnecessary complexity. I am thinking >> that maybe if needed it could be added later.