From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by dpdk.org (Postfix) with ESMTP id 2EE422B9B for ; Mon, 10 Apr 2017 04:21:21 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=intel.com; i=@intel.com; q=dns/txt; s=intel; t=1491790882; x=1523326882; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=3Z2z9rjM0b7XlTlUonpCx5s3VOENbdKX3S7c3IVIQ3c=; b=TcdpgChy3xKW2Bsw/c2uushY8s1cLhXhE9spsfQ+rNxMsVcGHRkN4vsG r8G3UEbZp0XJLwM1X9vzCU0FnbV9Gw==; Received: from orsmga002.jf.intel.com ([10.7.209.21]) by fmsmga103.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 09 Apr 2017 19:21:20 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.37,180,1488873600"; d="scan'208";a="71842707" Received: from kmsmsx155.gar.corp.intel.com ([172.21.73.106]) by orsmga002.jf.intel.com with ESMTP; 09 Apr 2017 19:21:19 -0700 Received: from pgsmsx103.gar.corp.intel.com ([169.254.2.175]) by KMSMSX155.gar.corp.intel.com ([169.254.15.247]) with mapi id 14.03.0319.002; Mon, 10 Apr 2017 10:21:19 +0800 From: "Zhao1, Wei" To: "Yang, Qiming" , "dev@dpdk.org" CC: "Lu, Wenzhuo" Thread-Topic: [dpdk-dev] [PATCH v6 1/3] lib/librte_ether: add support for port reset Thread-Index: AQHSr2xpSMcHD/C/tUKwIkMMIXlNk6G94X7A Date: Mon, 10 Apr 2017 02:21:17 +0000 Message-ID: References: <1491460427-38765-1-git-send-email-wei.zhao1@intel.com> <1491461483-39861-1-git-send-email-wei.zhao1@intel.com> <1491461483-39861-2-git-send-email-wei.zhao1@intel.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [172.30.20.206] Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Subject: Re: [dpdk-dev] [PATCH v6 1/3] lib/librte_ether: add support for port reset 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, 10 Apr 2017 02:21:22 -0000 Hi, Qiming > -----Original Message----- > From: Yang, Qiming > Sent: Friday, April 7, 2017 2:59 PM > To: Zhao1, Wei ; dev@dpdk.org > Cc: Lu, Wenzhuo ; Zhao1, Wei > > Subject: RE: [dpdk-dev] [PATCH v6 1/3] lib/librte_ether: add support for = port > reset >=20 > Hi, Wei >=20 > > -----Original Message----- > > From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Wei Zhao > > Sent: Thursday, April 6, 2017 2:51 PM > > To: dev@dpdk.org > > Cc: Lu, Wenzhuo ; Zhao1, Wei > > > > Subject: [dpdk-dev] [PATCH v6 1/3] lib/librte_ether: add support for > > port reset > > > > Add support for port reset in rte layer.This reset feature can not > > only used in vf port reset in later code develop, but alsopf port.But > > in this patch set, we only limit the discussion scope to vf reset. > > This patch Add an API to restart the device. >=20 > ' alsopf' should add space. 'Add' should be lowercase. Ok, I will fix it in next version. =20 >=20 > > It's for VF device in this scenario, kernel PF + DPDK VF. > > When the PF port down->up, APP should call this API to restart VF > > port. Most likely, APP should call it in its management thread and > > guarantee the thread safe. It means APP should stop the rx/tx and the > > device, then restart the device, then recover the device and > > rx/tx.This API can also do some restore work for the port. >=20 > Please check the grammar problems in this paragraph. Ok, I will do a double check. > > > > Signed-off-by: Wenzhuo Lu > > Signed-off-by: Wei Zhao > > --- > > lib/librte_ether/rte_ethdev.c | 17 +++++++++++++++++ > > lib/librte_ether/rte_ethdev.h | 28 > ++++++++++++++++++++++++++++ > > lib/librte_ether/rte_ether_version.map | 6 ++++++ > > 3 files changed, 51 insertions(+) > > > > diff --git a/lib/librte_ether/rte_ethdev.c > > b/lib/librte_ether/rte_ethdev.c index eb0a94a..2e06dca 100644 > > --- a/lib/librte_ether/rte_ethdev.c > > +++ b/lib/librte_ether/rte_ethdev.c > > @@ -3273,3 +3273,20 @@ rte_eth_dev_l2_tunnel_offload_set(uint8_t > > port_id, > > -ENOTSUP); > > return (*dev->dev_ops->l2_tunnel_offload_set)(dev, l2_tunnel, > mask, > > en); } > > + > > +int > > +rte_eth_dev_reset(uint8_t port_id) > > +{ > > + struct rte_eth_dev *dev; > > + int diag; > > + > > + RTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, -ENODEV); > > + > > + dev =3D &rte_eth_devices[port_id]; > > + > > + RTE_FUNC_PTR_OR_ERR_RET(*dev->dev_ops->dev_reset, - > > ENOTSUP); > > + > > + diag =3D (*dev->dev_ops->dev_reset)(dev); > > + > > + return diag; > > +} > > diff --git a/lib/librte_ether/rte_ethdev.h > > b/lib/librte_ether/rte_ethdev.h index 4be217c..8287c50 100644 > > --- a/lib/librte_ether/rte_ethdev.h > > +++ b/lib/librte_ether/rte_ethdev.h > > @@ -1367,6 +1367,9 @@ typedef int (*eth_l2_tunnel_offload_set_t) > > uint8_t en); > > /**< @internal enable/disable the l2 tunnel offload functions */ > > > > +typedef int (*eth_dev_reset_t)(struct rte_eth_dev *dev); /**< > > +@internal Function used to reset a configured Ethernet device. */ > > + > > #ifdef RTE_NIC_BYPASS > > > > enum { > > @@ -1509,6 +1512,9 @@ struct eth_dev_ops { > > eth_l2_tunnel_offload_set_t l2_tunnel_offload_set; > > /** Enable/disable l2 tunnel offload functions. */ > > > > + /** Reset device. */ > > + eth_dev_reset_t dev_reset; > > + > > eth_set_queue_rate_limit_t set_queue_rate_limit; /**< Set queue > rate > > limit. */ > > > > rss_hash_update_t rss_hash_update; /** Configure RSS hash > > protocols. */ > > @@ -4413,6 +4419,28 @@ int > > rte_eth_dev_get_name_by_port(uint8_t port_id, char *name); > > > > /** > > + * Reset an ethernet device when it's not working. One scenario is, > > +after PF > > + * port is down and up, the related VF port should be reset. >=20 > Is there have other scenario? I don't know what is 'down and up' means? C= an > you put it another way? "down and up" ,you can see testpmd has the state for all DPDK bound port=20 The scenario for pf to reset vf is too much to list all, for example,=20 " ifconfig port promisc " can also cause the reset. >=20 > > + * The API will stop the port, clear the rx/tx queues, re-setup the > > +rx/tx > > + * queues, restart the port. > > + * Before calling this API, APP should stop the rx/tx. When tx is > > +being stopped, > > + * APP can drop the packets and release the buffer instead of sending > them. > > + * This function can also do some restore work for the port, for > > +example, it can > > + * restore the added parameters of vlan, mac_addrs, > > +promisc_unicast_enabled > > + * flag and promisc_multicast_enabled flag. > > + * > > + * @param port_id > > + * The port identifier of the Ethernet device. > > + * > > + * @return > > + * - (0) if successful. > > + * - (-ENODEV) if port identifier is invalid. > > + * - (-ENOTSUP) if hardware doesn't support this function. > > + */ > > +int > > +rte_eth_dev_reset(uint8_t port_id); > > + > > +/** > > * @internal > > * Wrapper for use by pci drivers as a .probe function to attach to a = ethdev > > * interface. > > diff --git a/lib/librte_ether/rte_ether_version.map > > b/lib/librte_ether/rte_ether_version.map > > index c6c9d0d..529b27f 100644 > > --- a/lib/librte_ether/rte_ether_version.map > > +++ b/lib/librte_ether/rte_ether_version.map > > @@ -154,3 +154,9 @@ DPDK_17.02 { > > rte_flow_validate; > > > > } DPDK_16.11; > > + > > +DPDK_17.05 { > > + global: > > + > > + rte_eth_dev_reset; > > +} DPDK_17.02; > > \ No newline at end of file > > -- > > 2.9.3