From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 02064A04C8; Sat, 19 Sep 2020 14:06:32 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 542731D9BB; Sat, 19 Sep 2020 14:06:31 +0200 (CEST) Received: from huawei.com (szxga07-in.huawei.com [45.249.212.35]) by dpdk.org (Postfix) with ESMTP id 8E5D51D998 for ; Sat, 19 Sep 2020 14:06:29 +0200 (CEST) Received: from DGGEMS408-HUB.china.huawei.com (unknown [172.30.72.59]) by Forcepoint Email with ESMTP id ADDCBEEBA64DB4837595; Sat, 19 Sep 2020 20:06:26 +0800 (CST) Received: from [10.67.103.128] (10.67.103.128) by DGGEMS408-HUB.china.huawei.com (10.3.19.208) with Microsoft SMTP Server id 14.3.487.0; Sat, 19 Sep 2020 20:06:21 +0800 To: Andrew Rybchenko , CC: , , , References: <1599534347-20430-1-git-send-email-humin29@huawei.com> <1600332730-44952-1-git-send-email-humin29@huawei.com> <1600332730-44952-2-git-send-email-humin29@huawei.com> <92806f6d-5bb9-26fa-da50-f6b7ce179a4c@solarflare.com> From: "Min Hu (Connor)" Message-ID: Date: Sat, 19 Sep 2020 20:06:20 +0800 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:68.0) Gecko/20100101 Thunderbird/68.3.1 MIME-Version: 1.0 In-Reply-To: <92806f6d-5bb9-26fa-da50-f6b7ce179a4c@solarflare.com> Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: 8bit X-Originating-IP: [10.67.103.128] X-CFilter-Loop: Reflected Subject: Re: [dpdk-dev] [V5 1/3] ethdev: introduce FEC API X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" 在 2020/9/19 16:42, Andrew Rybchenko 写道: > On 9/18/20 12:28 PM, Min Hu (Connor) wrote: >> >> >> 在 2020/9/17 17:58, Andrew Rybchenko 写道: >>> On 9/17/20 11:52 AM, Min Hu (Connor) wrote: >>>> This patch adds Forward error correction(FEC) support for ethdev. >>>> Introduce APIs which support query and config FEC information in >>>> hardware. >>>> >>>> Signed-off-by: Min Hu (Connor) >>>> Reviewed-by: Wei Hu (Xavier) >>>> Reviewed-by: Chengwen Feng >>>> Reviewed-by: Chengchang Tang >>>> --- >>>> v4->v5: >>>> Modifies FEC capa definitions using macros. >>>> Add RTE_ prefix for public FEC mode enum. >>>> add release notes about FEC for dpdk20_11. >>>> >>>> --- >>>> v2->v3: >>>> add function return value "-ENOTSUP" for API > > [snip] > >>>> diff --git a/lib/librte_ethdev/rte_ethdev.h >>>> b/lib/librte_ethdev/rte_ethdev.h >>>> index 70295d7..aa79326 100644 >>>> --- a/lib/librte_ethdev/rte_ethdev.h >>>> +++ b/lib/librte_ethdev/rte_ethdev.h >>>> @@ -1511,6 +1511,25 @@ struct rte_eth_dcb_info { >>>>       struct rte_eth_dcb_tc_queue_mapping tc_queue; >>>>   }; >>>> +/** >>>> + * This enum indicates the possible (forward error correction)FEC >>>> modes >>>> + * of an ethdev port. >>>> + */ >>>> +enum rte_fec_mode { >>> >>> enum rte_eth_fec_mode >>> to be consistent with other enums and to have library prefix. >>> >> I fixed it in V6,thanks. >>>> +    RTE_ETH_FEC_NOFEC = 0,      /**< FEC is off */ >>>> +    RTE_ETH_FEC_BASER,          /**< FEC using common algorithm */ >>>> +    RTE_ETH_FEC_RS,             /**< FEC using RS algorithm */ >>>> +    RTE_ETH_FEC_AUTO,           /**< FEC autonegotiation modes */ >>> >>> May I suggest to put AUTO just after NOFEC. It would look move >>> logical in the future when more FEC modes are added. It would >>> look strange with AUTO in the middle of the list. >>> >>   hns3 PMD is the first to implement FEC function. The FEC mode order >>   is in accordance with the bit definition in hardware FEC module. > > Sorry, it is not a good justification. > It does not matter who is the first and who will be the last. > >>   in other ways, AUTO is flexible mode, which should not be >> differently     treated,the location in last item of enum is ok. > > I still disagree. If it is OK for other ethdev maintainer - no problem, > but I'd like to see explicit confirmation. OK,thanks, I will try to fix it as you suggested. > > [snip] > >>>> @@ -3328,6 +3347,70 @@ int  rte_eth_led_on(uint16_t port_id); >>>>   int  rte_eth_led_off(uint16_t port_id); >>>>   /** >>>> + * @warning >>>> + * @b EXPERIMENTAL: this API may change, or be removed, without >>>> prior notice >>>> + * >>>> + * Get Forward Error Correction(FEC) capability. >>>> + * >>>> + * @param port_id >>>> + *   The port identifier of the Ethernet device. >>>> + * @param fec_cap >>>> + *   returns the FEC capability from the device, as follows: >>>> + *   RTE_ETH_FEC_CAPA_NOFEC >>>> + *   RTE_ETH_FEC_CAPA_BASER >>>> + *   RTE_ETH_FEC_CAPA_RS >>>> + *   RTE_ETH_FEC_CAPA_AUTO >>> >>> I'd like to see thoughts about different FEC modes for >>> different link speed. How to report it? >>> (sorry if I missed it before) >> the relation between FEC mode and link speed, we can refer to >> hns3 PMD code, as follows: >> >>      switch (mac->link_speed) { >>      case ETH_SPEED_NUM_10G: >>      case ETH_SPEED_NUM_40G: >>          mode = RTE_ETH_FEC_CAPA_NOFEC | RTE_ETH_FEC_CAPA_BASER | >>              RTE_ETH_FEC_CAPA_AUTO; >>          break; >>      case ETH_SPEED_NUM_25G: >>      case ETH_SPEED_NUM_50G: >>          mode = RTE_ETH_FEC_CAPA_NOFEC | RTE_ETH_FEC_CAPA_BASER | >>              RTE_ETH_FEC_CAPA_RS | RTE_ETH_FEC_CAPA_AUTO; >>          break; >>      case ETH_SPEED_NUM_100G: >>      case ETH_SPEED_NUM_200G: >>          mode = RTE_ETH_FEC_CAPA_NOFEC | RTE_ETH_FEC_CAPA_RS | >>              RTE_ETH_FEC_CAPA_AUTO; >>          break; >>      default: >>          mode = 0; >>          break; >>      } > > I'm sorry, but it does not answer my question. > I think we should change the API to report supported FEC modes per > supported link speed. Sorry, maybe I do not get your meaning. By this API (rte_eth_fec_get_capability),we can get FEC capabilityes from device. we (as user )do not care about the link speed, because this is done in PMD. So, how to change the API. Could your make it more clearer? Hope for your reply. > >>>> + * @return >>>> + *   - (0) if successful. >>>> + *   - (-ENOTSUP) if underlying hardware OR driver doesn't support. >>>> + *     that operation. >>>> + *   - (-EIO) if device is removed. >>>> + *   - (-ENODEV)  if *port_id* invalid. >>>> + */ >>>> +__rte_experimental >>>> +int rte_eth_fec_get_capability(uint16_t port_id, uint32_t *fec_cap); >>> >>> [snip] >>> . >>> > > .