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 CC62141E65; Fri, 10 Mar 2023 15:43:13 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id B3CCB40ED9; Fri, 10 Mar 2023 15:43:13 +0100 (CET) Received: from NAM10-DM6-obe.outbound.protection.outlook.com (mail-dm6nam10on2066.outbound.protection.outlook.com [40.107.93.66]) by mails.dpdk.org (Postfix) with ESMTP id 7CF4B40DD8; Fri, 10 Mar 2023 15:43:12 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=TulUAdHP/fL7jPNqqcK357atAMAl0hrCNxXiwAiPapU1dlqSNwEcliVkGbEmh8JZNBJ6f8B+nUaKheFnXpuJmY4fwhVlPHc5FCIdEzxG2P7HOggRIzGq95Pfdvz6UUAOgnUv6FNHEl24c5CPOjtVcrPfmFWNcrcgpW5KK872r0Y2s9YbwAVJLC/bOurgZQ6EcEw5E0uM5fIYJS76m+Wana4e/VNTi/11KDDOqqo4qnOdkCbQ/FY6iUD+gElMyjjTkcgmBm81ita2CyfJmhHP9ZQTXfqUM4WtZcaX9eLoVspsCq+5ech+6IFnbJQlxgUFTQ2Z+l/xbyE1YpW90DbpLQ== 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=NYb0d2LH8CX4XCD06qsvKMUW3M5Leql3tc329e4oO6Q=; b=W6JPt/VuGO5QQyQyB6Qyv6IuxW3oelzSEzFuThw4jEDhdLemcqAEIg5v0Jk9SSJD26yEHnW7b4HZRJvG4wrBEoyd9uZW106bop3M5ir4gZCSr7p7Qz0JK1vUGs3cvM0BEvv4DxDG+54H0Y/89N5oiPPmTT5Qe6U6OCCLsbj8OHPVzCKLHptmHl7ZoaYqvYRo/N3Rzp/XGP6QUsjFIdA6qEkJ4hOjfF6OACMalidBLowOlC1p5+X4rl3TPJbzeBWecgyGh/tXIxdyTN/MehCX7eHWWoELsKbnqrYgI13Ff1V9QFJ8C3mSd+VZLIFv4Km2vgv3ijMkbU63Kasppdl8Tw== 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=NYb0d2LH8CX4XCD06qsvKMUW3M5Leql3tc329e4oO6Q=; b=s6UIdT66X1K1tV8/BBHkXpW8YNrwXLcCGtCgIW8RyQkXsgxFOmqLoDeR+bVOBjl4NzkfTl+ZjlpNk/uMG9BvL3bjVgDxxe4+zVpa6Fg/rSsoHrBD9P8gtOnbcCK2XbRmY3+ki9nWgQZMiucR06y/iNfNZ0FG77OoKk48a03sM9E= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=amd.com; Received: from CH2PR12MB4294.namprd12.prod.outlook.com (2603:10b6:610:a9::11) by MN2PR12MB4486.namprd12.prod.outlook.com (2603:10b6:208:263::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6178.19; Fri, 10 Mar 2023 14:43:10 +0000 Received: from CH2PR12MB4294.namprd12.prod.outlook.com ([fe80::dd5a:8a5c:f493:9640]) by CH2PR12MB4294.namprd12.prod.outlook.com ([fe80::dd5a:8a5c:f493:9640%5]) with mapi id 15.20.6178.019; Fri, 10 Mar 2023 14:43:10 +0000 Message-ID: <62ba45af-c587-f8a1-b18c-147db93e25ce@amd.com> Date: Fri, 10 Mar 2023 14:43:02 +0000 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.8.0 Subject: Re: [PATCH 1/1] net/sfc: stop misuse of Rx ingress m-port metadata on EF100 Content-Language: en-US To: Andrew Rybchenko , Ivan Malov , dev@dpdk.org Cc: stable@dpdk.org, Andy Moreton References: <20230309041101.8321-1-ivan.malov@arknetworks.am> From: Ferruh Yigit In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-ClientProxiedBy: LO4P265CA0099.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:2bc::20) To CH2PR12MB4294.namprd12.prod.outlook.com (2603:10b6:610:a9::11) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CH2PR12MB4294:EE_|MN2PR12MB4486:EE_ X-MS-Office365-Filtering-Correlation-Id: fa5c7b3f-1bbd-41e0-391e-08db2175c48d X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: uw8/HLWAtbcL730+yB60pGDGDoznltU8t135a5a4n15o/AOCwAkgAyOzYeitm4VVt+0ySeu2C5FSFQUJ/dqjoeMedA9w85VIphEoh1cde3+IYypRxMlS3shZ346KASPk7LRlxauekLv6kfYQN5l1dKhjbyXTIu60LRWMPujZD2yvqxvwkXAx9+zxTBkVBgKxk52UAcm9AvYwfM9sdKRAVJ6Uai64bOvF6KSwg9fNfHxUOGsy6dJycuswhPIp9gQWa0/yo9mX0J51ztN0uHA+zofvS1hz1XhYiMnpfbblh3RktcuyM5KivZ+9nGAmu51SZIIw7YksiPnIMW4sBBCrKHiYWdqAFyylSY5+0Bee9KiD0XAIVH7/3or/PvA+iT71rm+oM4ssLyR1lVTakmrOjC8oTtG6zC7XkdPXTisl+5KN4K2gMOpP+nE0dQDoeg3Ypp+YKql0gpY2GJQyiNCvHFg75KJHMoouuk+E9wLxnB6jTsGUi9lB0WHYKA5zN6rUajuBJWdBfmH0PSNViZQkFH+ScpNMuPLH0cxbarI3rVuxhcykcJ8nREqzXLjbO7CxuHVDjCZaGtZfpMS4nLdv29lu2crWUZ5SVAQGoWjNTz4LZZ8mwb0h7DszgUm+EUDHcMl8+PWtsOzHVshRzr5dJVNlBDWk/tx0Y2JEi1OZ77a/EcgN4v7SGOji+FIkW5d1GylqZWDXkDL+SVVNWTZvaEh/H/lO5GtzKB7Q7TJZftQ= 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:(13230025)(4636009)(396003)(366004)(39860400002)(376002)(136003)(346002)(451199018)(31686004)(316002)(110136005)(36756003)(31696002)(38100700002)(86362001)(6512007)(6506007)(6666004)(53546011)(83380400001)(186003)(26005)(2616005)(5660300002)(6486002)(478600001)(2906002)(41300700001)(8936002)(44832011)(8676002)(66946007)(66556008)(4326008)(66476007)(45980500001)(43740500002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?U1I5MElPZW5zSFE3R29rTThNNWhqZENoL3JaaHRaNE1ZbW5YQ1Q3cUk3V2FN?= =?utf-8?B?THZNYlQ5MzJ5UDFPTmNPKzUvYUZVVWpMQmpyektGWkkrempPNVZWVTBWTkJP?= =?utf-8?B?SDBVZjZuRVJqb0pOTzE3MDNVRVhGMHRxUGRQU2ZxYUdscWd5bnJTTFZZaEJH?= =?utf-8?B?TUE2U0hWZTFHWXRTT01iRlhXa1FrbVBXa0M0eXFQc2x2ZlV0b3V0QWFmOVVD?= =?utf-8?B?allGNUZGYlorVGJvcTUzblI1Wi9xK2VaWHRZbHd2Z3RrRWFOSGFrK0gxY21G?= =?utf-8?B?Wm1QanBuWUhMci9iMFFMZ25aaDRmM3pNQjJQK1NUVXowSUp0TGJEWi9GK0lx?= =?utf-8?B?NUVjS2J4UVFqZTdKNXcwbDl5ZWpuYlgvaTBQYjZPS1o5alUwcUxnekk5VllM?= =?utf-8?B?Y2ZqcHdkaTZwWlhQb2x6VmJnYW5TT0lNdGVTRWxKaEdCaDY0b1BrQ2w2WEd2?= =?utf-8?B?Z0g1ODRCS2xlMkZDV28wODUvNUlsV0owVjhlVmxVVTVSU3hwNHRFdFpqR01J?= =?utf-8?B?MkZFSWVOUEM1cVRCcE4wZUUwQ1dlZ1JwSE9GSmVsUThwSmsrQVZkOEZzZllv?= =?utf-8?B?OGFPZVYzMUdwOGtOaUNwVWZKT2FXek9xWGxqdERmbXhvdS9GNXpycmNZTlBE?= =?utf-8?B?b2dkUEZnU0NJT2pNanFDRmdROHlZNGR1OHBRdVNCTzdtREhuRDFlemZEZ2p1?= =?utf-8?B?K3kwc2R2WUpNMGZNd1RDMm5MbGtqM0p4R1NSVUZCRGs0c3dGajVPL1htaExj?= =?utf-8?B?TWx4U0I2NXNBSDJmclZDR3JOTzJNK01qdVBiWmp4c3E0ejB6Z1g0TzY0Znor?= =?utf-8?B?b28yOW5xTm9QbWRQU2szdi9zRDRoaWtmMEw2NkNSc0lIVDlKdjMxWk53SzF3?= =?utf-8?B?aHpwV2lDajVPK3ZBN2lhNWRnOTBIbFQza2x0ZWtiZThWYkZ0bC9jNDJWR1A0?= =?utf-8?B?dXQ4R3NWM05SM2RjcTlJWFZYbmFTNDdDZVhvM09UWDRtd2hXYWZ2dmtza1ps?= =?utf-8?B?b3c0UG5jWWQvdzJINnFZQjNWcy82Rzh0QmVTeWVDcFRVTGFTajdMaWNCU0xE?= =?utf-8?B?TXdsdnQ3RzNwRFNvU2J3VGlsU2orVHgwMTdEWVQ1SjdwUHg3K0JQRnF6Ym5s?= =?utf-8?B?MTFjWDRpVEdSSmk3NTV4RzJZY1JaNnRtUENDbE5zQ1IyUS9DOEpHNldueE54?= =?utf-8?B?ajdDMnNMT283Q2dqRTlIS2IxSi8wUlJKMXU2STFFTTEvRFhUd0U0NnlyRXVV?= =?utf-8?B?ZXU2RThFNGgydENJcFRmZzZYQzR4Z0d1VVRodGIzeVNnNnF4L0dSdHRXaTlE?= =?utf-8?B?YitmZnhBZG16UFl5SERvdzRGV1ZBLy9LUktzTlhwQXhDWEVIR1lSZFhIbDRH?= =?utf-8?B?dzdIS0RJWHZ3aXJJTlkxYmJWZ2h3QUgwSVFUajRKVG9XR3VmY2hHeWFpeXo4?= =?utf-8?B?dUJJRDZBR0U3d1h0U1BIcVArS3ozSWdRcXRzbGcxeDFkTXpZZnlpVGJjZ0xw?= =?utf-8?B?MU84U2diUjIxeUJYYWwwNlpMcmF5YW90UW4rMlozMHFuMjhiT1ZLZGZpRVNX?= =?utf-8?B?SFROUzZPVGNGVDE3UXRBNzJjQTlSN2Z5YktMSWZLR3VrWkJiWVFqTm1JaER5?= =?utf-8?B?UDVTUU5tZWUxYmZuMmVoa2hWWXArcktObjJzRzFNRHowUmdVaHFhbjR0SXpv?= =?utf-8?B?S1FYTmRjR1FEaGF6U0UyaDJyY1gxTEsrMTdBMXJreENMTUJ4TWFrQ0hNR3hC?= =?utf-8?B?Nkl4K2JpL3FpR01xMmF6eFZNMzVvRVJwdVRHVTdpTFRRMEZON1U3NUZzUXVj?= =?utf-8?B?TUR5c01nZC9tMTl1MHVtbGdpeUpSZWtUazFzaUVoT3Y0dXlXOER1YXRXWUwv?= =?utf-8?B?TWdOb1ovME1sR01ic2laUkpRYytRYnh5WEtBTWQrT1ZhVDl6bElha2ZuU2JR?= =?utf-8?B?Qy9PNkpSWGs2OCtEcUx2ZlEyQm5GbUxIMGordUNmT3psZllIWWJFb1FHRllh?= =?utf-8?B?S2Jka29mVHJyTm55SnFiUEdEK2NUd05YdFpqckNublNFWjJaMDF3WkN6aWRv?= =?utf-8?B?NTR0RS9GRHpka20vZVFOdm1zSkxMQkRITWkvOHFYZFVBajcrUWFLdGRldXcy?= =?utf-8?Q?FQeTRJBE7O/0gMG1UOz11f3wA?= X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: fa5c7b3f-1bbd-41e0-391e-08db2175c48d X-MS-Exchange-CrossTenant-AuthSource: CH2PR12MB4294.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Mar 2023 14:43:09.8817 (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: bd4HpfWtVMZAQaZdI32/CAsjYF3Ehl/8I30RQtZlTqmQyn5YpCFJK0F5HTUWHP2c X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR12MB4486 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 3/10/2023 2:18 PM, Andrew Rybchenko wrote: > On 3/9/23 07:11, Ivan Malov wrote: >> The driver supports representor functionality. In it, >> packets coming from VFs to the dedicated back-end Rx >> queue get demultiplexed into front-end Rx queues of >> representor ethdevs as per the per-packet metadata >> indicating logical HW ingress ports. On transmit, >> packets are provided with symmetrical metadata >> by front-end Tx queues, and the back-end queue >> transforms the data into so-called Tx override >> descriptors. These let the packets bypass flow >> lookup and go directly to the represented VFs. >> >> However, in the Rx part, the driver extracts >> the said metadata on every HW Rx queue, that >> is, not just on the one used by representors >> Doing so leads to a buggy behaviour. It is >> revealed by operating testpmd as follows: >> >> dpdk-testpmd -a 0000:c6:00.0 -a 0000:c6:00.1 -- -i >> >> testpmd> flow create 0 transfer pattern port_representor \ >>   port_id is 0 / end actions port_representor port_id 1 / end >> Flow rule #0 created >> >> testpmd> set fwd io >> testpmd> start tx_first >> >> testpmd> flow destroy 0 rule 0 >> Flow rule #0 destroyed >> >> testpmd> stop >> >>    ---------------------- Forward statistics for port 0  >> ----------------- >>    RX-packets: 19196498       RX-dropped: 0             RX-total: >> 19196498 >>    TX-packets: 19196535       TX-dropped: 0             TX-total: >> 19196535 >>    >> ----------------------------------------------------------------------- >> >>    ---------------------- Forward statistics for port 1  >> ----------------- >>    RX-packets: 19196503       RX-dropped: 0             RX-total: >> 19196503 >>    TX-packets: 19196530       TX-dropped: 0             TX-total: >> 19196530 >>    >> ----------------------------------------------------------------------- >> >> In this scenario, two physical functions of the adapter >> do not have any corresponding "back-to-back" forwarder >> on peer host. Packets transmitted from port 0 can only >> be forwarded to port 1 by means of a special flow rule. >> >> The flow rule indeed works, but destroying it does not >> stop forwarding. Port statistics carry on incrementing. >> >> Also, it is apparent that forwarding in the opposite >> direction must not have worked in this case as the >> flow is meant to target only one of the directions. >> >> Because of the bug, the first 32 mbufs received >> as a result of the flow rule operation have the >> said metadata present. In io mode, testpmd does >> not tamper with mbufs and passes them directly >> to transmit path, so this data remains in them >> instructing the PMD to override destinations >> of the packets via Tx option descriptors. >> >> Expected behaviour is as follows: >> >>    ---------------------- Forward statistics for port 0  >> ----------------- >>    RX-packets: 0              RX-dropped: 0             RX-total: 0 >>    TX-packets: 15787496       TX-dropped: 0             TX-total: >> 15787496 >>    >> ----------------------------------------------------------------------- >> >>    ---------------------- Forward statistics for port 1  >> ----------------- >>    RX-packets: 15787464       RX-dropped: 0             RX-total: >> 15787464 >>    TX-packets: 32             TX-dropped: 0             TX-total: 32 >>    >> ----------------------------------------------------------------------- >> >> These figures show the rule work only for one direction. >> Also, removing the flow shall cause forwarding to cease. >> >> Provided patch fixes the bug accordingly. >> >> Fixes: d0f981a3efd8 ("net/sfc: handle ingress mport in EF100 Rx prefix") >> Cc: stable@dpdk.org >> >> Signed-off-by: Ivan Malov >> Reviewed-by: Andy Moreton >> --- >>   drivers/net/sfc/sfc_dp_rx.h    | 3 +++ >>   drivers/net/sfc/sfc_ef100_rx.c | 3 ++- >>   drivers/net/sfc/sfc_rx.c       | 3 +++ >>   3 files changed, 8 insertions(+), 1 deletion(-) >> >> diff --git a/drivers/net/sfc/sfc_dp_rx.h b/drivers/net/sfc/sfc_dp_rx.h >> index 246adbd87c..51a44bd034 100644 >> --- a/drivers/net/sfc/sfc_dp_rx.h >> +++ b/drivers/net/sfc/sfc_dp_rx.h >> @@ -10,6 +10,8 @@ >>   #ifndef _SFC_DP_RX_H >>   #define _SFC_DP_RX_H >>   +#include >> + >>   #include >>   #include >>   @@ -27,6 +29,7 @@ extern "C" { >>    */ >>   struct sfc_dp_rxq { >>       struct sfc_dp_queue    dpq; >> +    bool            need_ingress_mport; > > May be I'm late, but it is a wrong location for the > information. The information is EF100-specific, but > the structure is a generic one. > > I'd say that corresponding flag should be set in rxq->flag > upon creation based on request in qcreate info and > cleared if Rx prefix does not support it. May be it > should be an error if we need the information, but Rx prefix > does not provide it. > Thanks Andrew, patch dropped from next-net, updating patchwork status as "change requested". >>   }; >>     /** Datapath receive queue descriptor number limitations */ >> diff --git a/drivers/net/sfc/sfc_ef100_rx.c >> b/drivers/net/sfc/sfc_ef100_rx.c >> index 16cd8524d3..c4d256b40d 100644 >> --- a/drivers/net/sfc/sfc_ef100_rx.c >> +++ b/drivers/net/sfc/sfc_ef100_rx.c >> @@ -876,7 +876,8 @@ sfc_ef100_rx_qstart(struct sfc_dp_rxq *dp_rxq, >> unsigned int evq_read_ptr, >>       else >>           rxq->flags &= ~SFC_EF100_RXQ_USER_MARK; >>   -    if ((unsup_rx_prefix_fields & >> +    if (dp_rxq->need_ingress_mport && >> +        (unsup_rx_prefix_fields & >>            (1U << EFX_RX_PREFIX_FIELD_INGRESS_MPORT)) == 0) >>           rxq->flags |= SFC_EF100_RXQ_INGRESS_MPORT; >>       else >> diff --git a/drivers/net/sfc/sfc_rx.c b/drivers/net/sfc/sfc_rx.c >> index 5ea98187c3..3d3d7d42e3 100644 >> --- a/drivers/net/sfc/sfc_rx.c >> +++ b/drivers/net/sfc/sfc_rx.c >> @@ -1265,6 +1265,9 @@ sfc_rx_qinit(struct sfc_adapter *sa, >> sfc_sw_index_t sw_index, >>       if (rc != 0) >>           goto fail_dp_rx_qcreate; >>   +    rxq_info->dp->need_ingress_mport = >> +        ((rxq_info->type_flags & EFX_RXQ_FLAG_INGRESS_MPORT) != 0); >> + >>       evq->dp_rxq = rxq_info->dp; >>         rxq_info->state = SFC_RXQ_INITIALIZED; >