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 DDC79A00BE; Tue, 29 Oct 2019 09:35:04 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id BAE721BECC; Tue, 29 Oct 2019 09:35:04 +0100 (CET) Received: from mail-il1-f178.google.com (mail-il1-f178.google.com [209.85.166.178]) by dpdk.org (Postfix) with ESMTP id 347401BEC0 for ; Tue, 29 Oct 2019 09:35:03 +0100 (CET) Received: by mail-il1-f178.google.com with SMTP id o16so10592993ilq.9 for ; Tue, 29 Oct 2019 01:35:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=HSKw62hBtZxndlicKjabcMb/ZsyJa3/kRFYPfskL5os=; b=SeFirKlAEH4lx7MVWq1bLFoC4tNCpaJaX3jbx7Y2hyDwVXXlgNIMDyJrWFDFUUZo24 28XATZrNZuD1j8IFsGN9ibTxhLfKU8R/LN+KnPpCnTxTtSMvwuWnUWvLnYz6CsZaMO1K 8JW2Iu1qqPmjssZH/irp3bqKFTGYlsznFGMjqmC3fnjhvhdTyQVDNVBsSpfCTZ1pHpJQ /D7lQF7GLuHOAl47qMIicRwTNcLFQeCrxwN8IbQvquxYJHEnvP4OjhPS9YboWu4rr3Ht D/4vqZc60Alwd5KUq7P9LEourEyAL+ejXc46Ox1g49V4gl0cvRik2a8ZMj+Wsbdt23eh h48Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=HSKw62hBtZxndlicKjabcMb/ZsyJa3/kRFYPfskL5os=; b=D0qPah9E1+Lb3j1xxOe17uVmk17aps8anyOFDCVY+eOov7O3EJdIxkTEa+zIZ6aauS fR2LS2M3noGV44W3It9SdQc5r3uhtvDWg6z/lVknkRgsZKo7TrKZZnKzE3Yb+EcgGjbZ i7bq84zryxHjG1/8KoqJeDUkmjrZS7f0MAHyVenS8fEbq46QUxvDhQqFtO9pCwAn2UeJ 6AeZa57Xfw1FOBlwWf8iIiqDeKyxALoNQPtFIr7jX/5lRzHzt+JUQ/615y4pML2e7hrY K7JnYjwcXkArZ5EiUOkTVtPjVDMmW4za8hFku4lKz2LY0th4FCS4OKS1cZf2QjdgMt85 Si1Q== X-Gm-Message-State: APjAAAWR6+05wwtAx0G/UjicD5Rvih/kBPADvkPUI6IGS8jz43AfhNuP 99mV76m1/Y8w9CYJh8AnoJogwALcWSQozn1KlZg= X-Google-Smtp-Source: APXvYqwDmU9uT/Yy0+3KhZDsZ1OhNCmQbhkygFyurG0gZFaoHrFfeFN9nK14b29aa2wmFuNdwrybnMP3kAUJsUlWopU= X-Received: by 2002:a92:99c5:: with SMTP id t66mr15785476ilk.271.1572338102201; Tue, 29 Oct 2019 01:35:02 -0700 (PDT) MIME-Version: 1.0 References: <20191015075133.38560-1-haiyue.wang@intel.com> <1811898.7XjjD7ZjLQ@xps> <12001140.UMXFOKstgs@xps> In-Reply-To: From: Jerin Jacob Date: Tue, 29 Oct 2019 14:04:46 +0530 Message-ID: To: "Wang, Haiyue" Cc: Thomas Monjalon , "Yigit, Ferruh" , dpdk-dev , "Ye, Xiaolong" , "Kinsella, Ray" , "Iremonger, Bernard" , "Sun, Chenmin" , Andrew Rybchenko , Slava Ovsiienko , Stephen Hemminger , David Marchand , Jerin Jacob Content-Type: text/plain; charset="UTF-8" Subject: Re: [dpdk-dev] [PATCH v4 1/4] ethdev: add the API for getting burst mode information 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" > > > > > > 1) We can not standardize all flags when it comes to HW specific > > > > > > details. We should NOT pollute public API with HW specific details. > > > > > > > > > > Currently, no detail to HW NIC specific. > > > > > > > > Yes. What if I want to add a "String" they represent a specific mode of PMD, > > > > so that I know what mode PMD really runs. > > > > It is not worth adding a flag for that in public API for HW specific notion. > > > > That's the problem. > > > > > > > > > > > > > > > 2) There is a danger if application starts taking any action based on > > > > > > flags. It should be only for display purpose so in that case public > > > > > > API should be the string to avoid misuse of the API(eventually the app > > > > > > will fail on some PMD > > > > > > if it takes any action based on the flag) > > > > > > > > > > These flags are *read only* for information. Can't image how to hack DPDK. ;-) > > > > > > > > To clarify: > > > > If we expose flag say RTE_ETH_BURST_SIMPLE then the application can take > > > > some action based on > > > > if (flag == RTE_ETH_BURST_SIMPLE) > > > > do_some_thing(); > > > > > > > > If the purpose is ONLY for "display" as info then exposing as the string will > > > > enable to NOT standardize i.e application can never check based on > > > > the string name(as it is not standardized) hence no danger. > > > > > > > > So what is the purpose of this API? Just display or are you expecting > > > > the application can do any action based on this? > > > > > > Oh, I see. Mainly for showing which burst rx/tx module running: > > > > If so, the public API should be as string to avoid any other interpreation of > > flags in application. > > > > And it makes application life easy too. > > > > > > At first, we do use string, but string contains same words. Off course, this > is from CPU's view. Our two PMDs string are nearly the same, so we use bit > instead. And people may check which CPU's vertor using. And we provide to_string > to help make both happy. Not sure we really make them happy. # I understand the flags can enable us to reuse some of the code and I agree with that. But it has the downside mentioned above. How about the following to have the best of both worlds. 1) The public ethdev API should return only "string" i.e the flags SHOULD NOT be exposed as ethdev API i.e int rte_eth_tx_burst_mode_name(uint16_t port_id, uint16_t queue_id, char *name); 2) The PMD interface to the common code can be following struct eth_pmd_burst_mode { uint64_t options; char name[128]; /* PMD specific burst mode information */ }; typedef int (*eth_burst_mode_get_t)(struct rte_eth_dev *dev, uint16_t queue_id, struct eth_burst_mode *mode) 3) The implementation of rte_eth_tx_burst_mode_name() shall do optons flag to string converion(again internal to common code implemetation) and concatenate with eth_pmd_burst_mode::name This would help to reuse some of the flags to name conversion logic across all PMDs. And PMD are free to return eth_pmd_burst_mode::options as zero in that case final string only be eth_pmd_burst_mode::name. > > > > > > > https://docs.fd.io/vpp/18.11/d7/d1d/plugins_2dpdk_2device_2format_8c_source.html > > > > > > s = format (s, "%Utx burst function: %s\n", > > > 579 format_white_space, indent + 2, > > > 580 ptr2sname (rte_eth_devices[xd->port_id].tx_pkt_burst)); > > > 581 s = format (s, "%Urx burst function: %s\n", > > > 582 format_white_space, indent + 2, > > > 583 ptr2sname (rte_eth_devices[xd->port_id].rx_pkt_burst)); > > > > > > https://docs.fd.io/vpp/18.11/d7/d1d/plugins_2dpdk_2device_2format_8c_source.html > > > > > > 488 static const char * > > > 489 ptr2sname (void *p) > > > 490 { > > > 491 Dl_info info = { 0 }; > > > 492 > > > 493 if (dladdr (p, &info) == 0) > > > 494 return 0; > > > 495 > > > 496 return info.dli_sname; > > > 497 } > > > > > > tx burst function: ixgbe_xmit_pkts > > > rx burst function: ixgbe_recv_pkts > > > > > > If the PMD's rx/tx is *static* function, 'ptr2name' returns 'nil'.