From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 8730AA00C3; Mon, 3 Oct 2022 16:22:19 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 7521040DFB; Mon, 3 Oct 2022 16:22:19 +0200 (CEST) Received: from shelob.oktetlabs.ru (shelob.oktetlabs.ru [91.220.146.113]) by mails.dpdk.org (Postfix) with ESMTP id 8722340695 for ; Mon, 3 Oct 2022 16:22:17 +0200 (CEST) Received: from [192.168.38.17] (aros.oktetlabs.ru [192.168.38.17]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by shelob.oktetlabs.ru (Postfix) with ESMTPSA id 0C29266; Mon, 3 Oct 2022 17:22:17 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 shelob.oktetlabs.ru 0C29266 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=oktetlabs.ru; s=default; t=1664806937; bh=sAZg9puu5vN73Gj1mLxKjxzcjiExRHHflVt9jBft7Ks=; h=Date:Subject:To:Cc:References:From:In-Reply-To:From; b=AweerXX+uVw+XqDJgZOsqef7K7s33MPQblRPvtkZBHFsvWAxghr7sjXmEn2SbPimQ 0VIX1Xjqf0m0LaaRItvbURZTEZqCJjV4U/jN+9jjzxdVDyRnLZBXeAsWkqxEyul7pI rTnfW/HaTBVbDSenSsiE4R0po2yD7GUFxj5eN5Ns= Message-ID: <3f418586-58b0-6ce6-5e75-a8b6b5e34b7d@oktetlabs.ru> Date: Mon, 3 Oct 2022 17:22:16 +0300 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.3.0 Subject: Re: [PATCH v2 14/14] net/idpf: add support for timestamp offload Content-Language: en-US To: Junfeng Guo , qi.z.zhang@intel.com, jingjing.wu@intel.com, beilei.xing@intel.com Cc: dev@dpdk.org, xiao.w.wang@intel.com, Wenjing Qiao References: <20220803113104.1184059-1-junfeng.guo@intel.com> <20220905105828.3190335-1-junfeng.guo@intel.com> <20220905105828.3190335-15-junfeng.guo@intel.com> From: Andrew Rybchenko Organization: OKTET Labs In-Reply-To: <20220905105828.3190335-15-junfeng.guo@intel.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org On 9/5/22 13:58, Junfeng Guo wrote: > Add support for timestamp offload. > > Signed-off-by: Wenjing Qiao > Signed-off-by: Junfeng Guo [snip] > +/* Helper function to convert a 32b nanoseconds timestamp to 64b. */ > +static inline uint64_t > +idpf_tstamp_convert_32b_64b(struct iecm_hw *hw, struct idpf_adapter *ad, > + uint32_t flag, uint32_t in_timestamp) > +{ > +/* TODO: timestamp for ACC */ > +#ifdef RTE_ARCH_ARM64 > + return 0; > +#endif /* RTE_ARCH_ARM64 */ > + > +#ifdef RTE_ARCH_X86_64 > + const uint64_t mask = 0xFFFFFFFF; > + uint32_t hi, lo, lo2, delta; > + uint64_t ns; > + > + if (flag) { > + IECM_WRITE_REG(hw, GLTSYN_CMD_SYNC_0_0, PF_GLTSYN_CMD_SYNC_SHTIME_EN_M); > + IECM_WRITE_REG(hw, GLTSYN_CMD_SYNC_0_0, PF_GLTSYN_CMD_SYNC_EXEC_CMD_M | > + PF_GLTSYN_CMD_SYNC_SHTIME_EN_M); > + lo = IECM_READ_REG(hw, PF_GLTSYN_SHTIME_L_0); > + hi = IECM_READ_REG(hw, PF_GLTSYN_SHTIME_H_0); > + /* > + * On typical system, the delta between lo and lo2 is ~1000ns, > + * so 10000 seems a large-enough but not overly-big guard band. > + */ > + if (lo > (UINT32_MAX - IDPF_TIMESYNC_REG_WRAP_GUARD_BAND)) > + lo2 = IECM_READ_REG(hw, PF_GLTSYN_SHTIME_L_0); > + else > + lo2 = lo; > + > + if (lo2 < lo) { > + lo = IECM_READ_REG(hw, PF_GLTSYN_SHTIME_L_0); > + hi = IECM_READ_REG(hw, PF_GLTSYN_SHTIME_H_0); > + } > + > + ad->time_hw = ((uint64_t)hi << 32) | lo; > + } > + > + delta = (in_timestamp - (uint32_t)(ad->time_hw & mask)); > + if (delta > (mask / 2)) { > + delta = ((uint32_t)(ad->time_hw & mask) - in_timestamp); > + ns = ad->time_hw - delta; > + } else { > + ns = ad->time_hw + delta; > + } > + > + return ns; > +#endif /* RTE_ARCH_X86_64 */ Conditional compilation is rather strange above. Will it break build on some architectures? Non-x86-64 and non-ARM64. > +} > > +#endif /* _IDPF_RXTX_H_ */