From mboxrd@z Thu Jan 1 00:00:00 1970 From: Qi Zhang Subject: [PATCH 08/20] net/i40e/base: read LLDP config area with correct endianness Date: Tue, 25 Sep 2018 10:34:30 +0800 Message-ID: <20180925023442.134705-9-qi.z.zhang@intel.com> References: <20180925023442.134705-1-qi.z.zhang@intel.com> Cc: dev@dpdk.org, ferruh.yigit@intel.com, helin.zhang@intel.com, Qi Zhang , stable@dpdk.org To: beilei.xing@intel.com Return-path: In-Reply-To: <20180925023442.134705-1-qi.z.zhang@intel.com> List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" The NVM is in little endian so when we read from it we need to do the correct thing for the endianness of the machine. Cc: stable@dpdk.org Signed-off-by: Qi Zhang --- drivers/net/i40e/base/i40e_dcb.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/drivers/net/i40e/base/i40e_dcb.c b/drivers/net/i40e/base/i40e_dcb.c index 7cd444bb3..a26f82b3a 100644 --- a/drivers/net/i40e/base/i40e_dcb.c +++ b/drivers/net/i40e/base/i40e_dcb.c @@ -1262,18 +1262,20 @@ static enum i40e_status_code _i40e_read_lldp_cfg(struct i40e_hw *hw, { u32 address, offset = (2 * word_offset); enum i40e_status_code ret; + __le16 raw_mem; u16 mem; ret = i40e_acquire_nvm(hw, I40E_RESOURCE_READ); if (ret != I40E_SUCCESS) return ret; - ret = i40e_aq_read_nvm(hw, 0x0, module * 2, sizeof(mem), &mem, true, - NULL); + ret = i40e_aq_read_nvm(hw, 0x0, module * 2, sizeof(raw_mem), &raw_mem, + true, NULL); i40e_release_nvm(hw); if (ret != I40E_SUCCESS) return ret; + mem = LE16_TO_CPU(raw_mem); /* Check if this pointer needs to be read in word size or 4K sector * units. */ @@ -1286,12 +1288,13 @@ static enum i40e_status_code _i40e_read_lldp_cfg(struct i40e_hw *hw, if (ret != I40E_SUCCESS) goto err_lldp_cfg; - ret = i40e_aq_read_nvm(hw, module, offset, sizeof(mem), &mem, true, - NULL); + ret = i40e_aq_read_nvm(hw, module, offset, sizeof(raw_mem), &raw_mem, + true, NULL); i40e_release_nvm(hw); if (ret != I40E_SUCCESS) return ret; + mem = LE16_TO_CPU(raw_mem); offset = mem + word_offset; offset *= 2; -- 2.13.6