From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by dpdk.org (Postfix) with ESMTP id 185234F90 for ; Mon, 9 Jul 2018 10:57:30 +0200 (CEST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga004.jf.intel.com ([10.7.209.38]) by orsmga106.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 09 Jul 2018 01:57:30 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.51,329,1526367600"; d="scan'208";a="214460578" Received: from jguo15x-mobl3.ccr.corp.intel.com (HELO [10.67.68.84]) ([10.67.68.84]) by orsmga004.jf.intel.com with ESMTP; 09 Jul 2018 01:57:26 -0700 To: Matan Azrad , "Lu, Wenzhuo" , "stephen@networkplumber.org" , "Richardson, Bruce" , "Yigit, Ferruh" , "Ananyev, Konstantin" , "gaetan.rivet@6wind.com" , "Wu, Jingjing" , Thomas Monjalon , Mordechay Haimovsky , "Van Haaren, Harry" , "Zhang, Qi Z" , "He, Shaopeng" , "Iremonger, Bernard" , "arybchenko@solarflare.com" References: <1530787185-5915-1-git-send-email-jia.guo@intel.com> <1531119413-17298-1-git-send-email-jia.guo@intel.com> <1531119413-17298-2-git-send-email-jia.guo@intel.com> <6A0DE07E22DDAD4C9103DF62FEBC09093B800FC5@shsmsx102.ccr.corp.intel.com> Cc: "jblunck@infradead.org" , "shreyansh.jain@nxp.com" , "dev@dpdk.org" , "Zhang, Helin" From: Jeff Guo Message-ID: Date: Mon, 9 Jul 2018 16:57:26 +0800 User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.4.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [dpdk-dev] [PATCH v2 1/3] net/ixgbe: enable hotplug detect in ixgbe 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: , X-List-Received-Date: Mon, 09 Jul 2018 08:57:31 -0000 hi, wenzhuo and matan. On 7/9/2018 3:51 PM, Matan Azrad wrote: > Hi > > From: Lu, Wenzhuo >> Hi Jeff, >> >>> -----Original Message----- >>> From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Jeff Guo >>> Sent: Monday, July 9, 2018 2:57 PM >>> To: stephen@networkplumber.org; Richardson, Bruce >>> ; Yigit, Ferruh ; >>> Ananyev, Konstantin ; >>> gaetan.rivet@6wind.com; Wu, Jingjing ; >>> thomas@monjalon.net; motih@mellanox.com; matan@mellanox.com; >> Van >>> Haaren, Harry ; Zhang, Qi Z >>> ; He, Shaopeng ; >>> Iremonger, Bernard ; >>> arybchenko@solarflare.com >>> Cc: jblunck@infradead.org; shreyansh.jain@nxp.com; dev@dpdk.org; Guo, >>> Jia ; Zhang, Helin >>> Subject: [dpdk-dev] [PATCH v2 1/3] net/ixgbe: enable hotplug detect in >>> ixgbe >>> >>> This patch aim to enable hotplug detect in ixgbe pmd driver. Firstly >>> it set the flags RTE_PCI_DRV_INTR_RMV in drv_flags to announce the >>> hotplug ability, and then use rte_dev_event_callback_register to >>> register the hotplug event callback to eal. When eal detect the >>> hotplug event, it will call the callback to process it, if the event >>> is hotplug remove, it will trigger the RTE_ETH_EVENT_INTR_RMV event >>> into ethdev callback to let app process the hotplug for the ethdev. >>> >>> This is an example for other driver, that if any driver support >>> hotplug feature could be use this way to enable hotplug detect. >>> >>> Signed-off-by: Jeff Guo >>> --- >>> v2->v1: >>> refine some doc. >>> --- >>> drivers/net/ixgbe/ixgbe_ethdev.c | 46 >>> +++++++++++++++++++++++++++++++++++++++- >>> 1 file changed, 45 insertions(+), 1 deletion(-) >>> >>> diff --git a/drivers/net/ixgbe/ixgbe_ethdev.c >>> b/drivers/net/ixgbe/ixgbe_ethdev.c >>> index 87d2ad0..83ce026 100644 >>> --- a/drivers/net/ixgbe/ixgbe_ethdev.c >>> +++ b/drivers/net/ixgbe/ixgbe_ethdev.c >>> @@ -1534,6 +1534,47 @@ generate_random_mac_addr(struct ether_addr >>> *mac_addr) >>> memcpy(&mac_addr->addr_bytes[3], &random, 3); } >>> >>> +static void >>> +eth_dev_event_callback(char *device_name, enum rte_dev_event_type >>> type, >>> + __rte_unused void *arg) >>> +{ >>> + uint32_t pid; >>> + >>> + if (type >= RTE_DEV_EVENT_MAX) { >>> + fprintf(stderr, "%s called upon invalid event %d\n", >>> + __func__, type); >>> + fflush(stderr); >>> + } >>> + >>> + switch (type) { >>> + case RTE_DEV_EVENT_REMOVE: >>> + PMD_DRV_LOG(INFO, "The device: %s has been >> removed!\n", >>> + device_name); >>> + >>> + if (!device_name) >>> + return; >>> + >>> + for (pid = 0; pid < RTE_MAX_ETHPORTS; pid++) { >>> + if (rte_eth_devices[pid].device) { >>> + if (!strcmp(device_name, >>> + rte_eth_devices[pid].device->name)) { >>> + _rte_eth_dev_callback_process( >>> + &rte_eth_devices[pid], >>> + RTE_ETH_EVENT_INTR_RMV, >>> NULL); >>> + continue; >>> + } >>> + } >>> + } >>> + break; >>> + case RTE_DEV_EVENT_ADD: >>> + RTE_LOG(INFO, EAL, "The device: %s has been added!\n", >>> + device_name); >>> + break; >>> + default: >>> + break; >>> + } >>> +} >> I don't get the point. Looks like this's a very common rte code. Why is it put in >> ixgbe pmd? > Jeff needs to detect if the removed device is related to this PMD, than to raise RMV events for all this PMD ethdev associated ports. > He should not raise RMV events for other PMD ports. > It should be like wenzhuo said that i could no strong reason to let common way in ixgbe pmd. And sure raise RMV events for none related PMD ports is not my hope. Will plan to let it go into the eth dev layer to process it. >