From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by dpdk.space (Postfix) with ESMTP id 3629BA00E6 for ; Tue, 14 May 2019 17:11:27 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id C22D65F21; Tue, 14 May 2019 17:11:25 +0200 (CEST) Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by dpdk.org (Postfix) with ESMTP id 9606E5F1F; Tue, 14 May 2019 17:11:23 +0200 (CEST) Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id B637487624; Tue, 14 May 2019 15:11:22 +0000 (UTC) Received: from [10.36.116.124] (ovpn-116-124.ams2.redhat.com [10.36.116.124]) by smtp.corp.redhat.com (Postfix) with ESMTP id D308919C5A; Tue, 14 May 2019 15:11:20 +0000 (UTC) To: Qi Zhang , wenzhuo.lu@intel.com, wei.zhao1@intel.com Cc: paul.m.stillwell.jr@intel.com, dev@dpdk.org, stable@dpdk.org, Jingjing Wu References: <20190504140910.8935-1-qi.z.zhang@intel.com> From: Kevin Traynor Message-ID: <1b9cf52d-b0c4-94e7-2869-99fe2bba7693@redhat.com> Date: Tue, 14 May 2019 16:11:19 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.6.1 MIME-Version: 1.0 In-Reply-To: <20190504140910.8935-1-qi.z.zhang@intel.com> Content-Type: text/plain; charset="UTF-8" Content-Language: en-US Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.26]); Tue, 14 May 2019 15:11:22 +0000 (UTC) Subject: Re: [dpdk-dev] [PATCH] net/iavf: enable more link speed 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" Message-ID: <20190514151119.w8NtIz22iAT22E_JTN37UFud6PCQlAIXJwiSIDr1T5o@z> On 04/05/2019 15:09, Qi Zhang wrote: > Enable advanced link speed mode (VIRTCHNL_VF_CAP_ADV_LINK_SPEED) so iavf > PMD can identify more link speed that reported by pf. > > Cc: stable@dpdk.org > There is no Fixes: tag and that looks correct as it is adding a new capability and in the process changing some of the existing code. Not applying for 18.11.2, we can discuss further for 18.11.3 if necessary. Kevin. > Signed-off-by: Qi Zhang > --- > drivers/net/iavf/base/virtchnl.h | 17 ++++++++++++++++- > drivers/net/iavf/iavf.h | 2 +- > drivers/net/iavf/iavf_ethdev.c | 21 +++++++++++++++------ > drivers/net/iavf/iavf_vchnl.c | 4 ++-- > 4 files changed, 34 insertions(+), 10 deletions(-) > > diff --git a/drivers/net/iavf/base/virtchnl.h b/drivers/net/iavf/base/virtchnl.h > index 13bfdb86b..10b65380c 100644 > --- a/drivers/net/iavf/base/virtchnl.h > +++ b/drivers/net/iavf/base/virtchnl.h > @@ -258,6 +258,8 @@ VIRTCHNL_CHECK_STRUCT_LEN(16, virtchnl_vsi_resource); > #define VIRTCHNL_VF_OFFLOAD_ENCAP 0X00100000 > #define VIRTCHNL_VF_OFFLOAD_ENCAP_CSUM 0X00200000 > #define VIRTCHNL_VF_OFFLOAD_RX_ENCAP_CSUM 0X00400000 > +/* Define below the capability flags that are not offloads */ > +#define VIRTCHNL_VF_CAP_ADV_LINK_SPEED 0x00000080 > > #define VF_BASE_MODE_OFFLOADS (VIRTCHNL_VF_OFFLOAD_L2 | \ > VIRTCHNL_VF_OFFLOAD_VLAN | \ > @@ -562,10 +564,23 @@ enum virtchnl_event_codes { > struct virtchnl_pf_event { > enum virtchnl_event_codes event; > union { > + /* If the PF driver does not support the new speed reporting > + * capabilities then use link_event else use link_event_adv to > + * get the speed and link information. The ability to understand > + * new speeds is indicated by setting the capability flag > + * VIRTCHNL_VF_CAP_ADV_LINK_SPEED in vf_cap_flags parameter > + * in virtchnl_vf_resource struct and can be used to determine > + * which link event struct to use below. > + */ > struct { > enum virtchnl_link_speed link_speed; > - bool link_status; > + u8 link_status; > } link_event; > + struct { > + /* link_speed provided in Mbps */ > + u32 link_speed; > + u8 link_status; > + } link_event_adv; > } event_data; > > int severity; > diff --git a/drivers/net/iavf/iavf.h b/drivers/net/iavf/iavf.h > index e6e3e8d30..9a334e41c 100644 > --- a/drivers/net/iavf/iavf.h > +++ b/drivers/net/iavf/iavf.h > @@ -95,7 +95,7 @@ struct iavf_info { > /* Event from pf */ > bool dev_closed; > bool link_up; > - enum virtchnl_link_speed link_speed; > + uint32_t link_speed; > > struct iavf_vsi vsi; > bool vf_reset; > diff --git a/drivers/net/iavf/iavf_ethdev.c b/drivers/net/iavf/iavf_ethdev.c > index 7a0696ed7..bd9c5ecdf 100644 > --- a/drivers/net/iavf/iavf_ethdev.c > +++ b/drivers/net/iavf/iavf_ethdev.c > @@ -584,24 +584,33 @@ iavf_dev_link_update(struct rte_eth_dev *dev, > * when receive LINK_CHANGE evnet from PF by Virtchnnl. > */ > switch (vf->link_speed) { > - case VIRTCHNL_LINK_SPEED_100MB: > + case 10: > + new_link.link_speed = ETH_SPEED_NUM_10M; > + break; > + case 100: > new_link.link_speed = ETH_SPEED_NUM_100M; > break; > - case VIRTCHNL_LINK_SPEED_1GB: > + case 1000: > new_link.link_speed = ETH_SPEED_NUM_1G; > break; > - case VIRTCHNL_LINK_SPEED_10GB: > + case 10000: > new_link.link_speed = ETH_SPEED_NUM_10G; > break; > - case VIRTCHNL_LINK_SPEED_20GB: > + case 20000: > new_link.link_speed = ETH_SPEED_NUM_20G; > break; > - case VIRTCHNL_LINK_SPEED_25GB: > + case 25000: > new_link.link_speed = ETH_SPEED_NUM_25G; > break; > - case VIRTCHNL_LINK_SPEED_40GB: > + case 40000: > new_link.link_speed = ETH_SPEED_NUM_40G; > break; > + case 50000: > + new_link.link_speed = ETH_SPEED_NUM_50G; > + break; > + case 100000: > + new_link.link_speed = ETH_SPEED_NUM_100G; > + break; > default: > new_link.link_speed = ETH_SPEED_NUM_NONE; > break; > diff --git a/drivers/net/iavf/iavf_vchnl.c b/drivers/net/iavf/iavf_vchnl.c > index 6381fb63c..da6401d35 100644 > --- a/drivers/net/iavf/iavf_vchnl.c > +++ b/drivers/net/iavf/iavf_vchnl.c > @@ -153,7 +153,7 @@ iavf_handle_pf_event_msg(struct rte_eth_dev *dev, uint8_t *msg, > case VIRTCHNL_EVENT_LINK_CHANGE: > PMD_DRV_LOG(DEBUG, "VIRTCHNL_EVENT_LINK_CHANGE event"); > vf->link_up = pf_msg->event_data.link_event.link_status; > - vf->link_speed = pf_msg->event_data.link_event.link_speed; > + vf->link_speed = pf_msg->event_data.link_event_adv.link_speed; > iavf_dev_link_update(dev, 0); > _rte_eth_dev_callback_process(dev, RTE_ETH_EVENT_INTR_LSC, > NULL); > @@ -344,7 +344,7 @@ iavf_get_vf_resource(struct iavf_adapter *adapter) > * add advanced/optional offload capabilities > */ > > - caps = IAVF_BASIC_OFFLOAD_CAPS; > + caps = IAVF_BASIC_OFFLOAD_CAPS | VIRTCHNL_VF_CAP_ADV_LINK_SPEED; > > args.in_args = (uint8_t *)∩︀ > args.in_args_size = sizeof(caps); >