From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ferruh Yigit Subject: Re: [PATCH v2 11/14] net/i40e: support AVF basic interface Date: Mon, 4 Dec 2017 12:04:04 -0800 Message-ID: References: <1508488012-82704-1-git-send-email-jingjing.wu@intel.com> <1511505206-97333-1-git-send-email-jingjing.wu@intel.com> <1511505206-97333-12-git-send-email-jingjing.wu@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Cc: wenzhuo.lu@intel.com To: Jingjing Wu , dev@dpdk.org Return-path: Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by dpdk.org (Postfix) with ESMTP id 3376C1C00 for ; Mon, 4 Dec 2017 21:04:06 +0100 (CET) In-Reply-To: <1511505206-97333-12-git-send-email-jingjing.wu@intel.com> Content-Language: en-US List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" On 11/23/2017 10:33 PM, Jingjing Wu wrote: > Enable Virtchnl offload Caps negotiation and RSS_PF offload > to support AVF basic interface. > > Signed-off-by: Jingjing Wu > --- > config/common_base | 2 +- > drivers/net/i40e/i40e_ethdev.c | 64 +++++++++++++++---- > drivers/net/i40e/i40e_ethdev.h | 4 ++ > drivers/net/i40e/i40e_pf.c | 137 +++++++++++++++++++++++++++++++++++++---- > drivers/net/i40e/i40e_pf.h | 6 ++ This is a i40e patch that enables AVF support, right? I believe it would be better to separate the config change that enables the AVF PMD by default from i40e changes patches. <...> > @@ -3694,14 +3695,21 @@ i40e_get_rss_lut(struct i40e_vsi *vsi, uint8_t *lut, uint16_t lut_size) > uint32_t *lut_dw = (uint32_t *)lut; > uint16_t i, lut_size_dw = lut_size / 4; > > - for (i = 0; i < lut_size_dw; i++) > - lut_dw[i] = I40E_READ_REG(hw, I40E_PFQF_HLUT(i)); > + if (vsi->type == I40E_VSI_SRIOV) { > + for (i = 0; i <= lut_size_dw; i++) > + reg = I40E_VFQF_HLUT1(i, vsi->user_param); > + lut_dw[i] = i40e_read_rx_ctl(hw, reg); this assignment is out of "for" loop. > + } else { > + for (i = 0; i < lut_size_dw; i++) > + lut_dw[i] = I40E_READ_REG(hw, > + I40E_PFQF_HLUT(i)); > + } > } > > return 0; > } > <...> > @@ -6754,8 +6784,20 @@ i40e_get_rss_key(struct i40e_vsi *vsi, uint8_t *key, uint8_t *key_len) > uint32_t *key_dw = (uint32_t *)key; > uint16_t i; > > - for (i = 0; i <= I40E_PFQF_HKEY_MAX_INDEX; i++) > - key_dw[i] = i40e_read_rx_ctl(hw, I40E_PFQF_HKEY(i)); > + if (vsi->type == I40E_VSI_SRIOV) { > + for (i = 0; i <= I40E_VFQF_HKEY_MAX_INDEX; i++) > + reg = I40E_VFQF_HKEY1(i, vsi->user_param); > + key_dw[i] = i40e_read_rx_ctl(hw, reg); This line is not part of the for loop, seems which is the intention, and all credits goes to compiler to figuring this out. > + *key_len = (I40E_VFQF_HKEY_MAX_INDEX + 1) * > + sizeof(uint32_t); > + > + } else { > + for (i = 0; i <= I40E_PFQF_HKEY_MAX_INDEX; i++) > + reg = I40E_PFQF_HKEY(i); > + key_dw[i] = i40e_read_rx_ctl(hw, reg); Same problem here, "for" scope is wrong. <...>