[v1] net/ice: check the DSN package file firstly
Checks
Commit Message
Align the package file search sequence with PF only for DCF mode. Get
the DSN through the virtual channel firstly to check the package file
accessible.
Signed-off-by: Haiyue Wang <haiyue.wang@intel.com>
---
drivers/net/ice/ice_dcf_parent.c | 30 ++++++++++++++++++++++++++----
1 file changed, 26 insertions(+), 4 deletions(-)
Comments
On 04/16, Haiyue Wang wrote:
>Align the package file search sequence with PF only for DCF mode. Get
>the DSN through the virtual channel firstly to check the package file
>accessible.
check the accessibility of the package file?
>
>Signed-off-by: Haiyue Wang <haiyue.wang@intel.com>
>---
> drivers/net/ice/ice_dcf_parent.c | 30 ++++++++++++++++++++++++++----
> 1 file changed, 26 insertions(+), 4 deletions(-)
>
>diff --git a/drivers/net/ice/ice_dcf_parent.c b/drivers/net/ice/ice_dcf_parent.c
>index e05b6b3e5..d4b4ededb 100644
>--- a/drivers/net/ice/ice_dcf_parent.c
>+++ b/drivers/net/ice/ice_dcf_parent.c
>@@ -226,12 +226,34 @@ ice_dcf_request_pkg_name(struct ice_hw *hw, char *pkg_name)
> {
> struct ice_dcf_adapter *dcf_adapter =
> container_of(hw, struct ice_dcf_adapter, parent.hw);
>+ struct virtchnl_pkg_info pkg_info;
>+ struct dcf_virtchnl_cmd vc_cmd;
>+ uint64_t dsn;
>
>- /* TODO: check with DSN firstly by iAVF */
>- PMD_INIT_LOG(DEBUG,
>- "DCF VSI_ID = %u",
>- dcf_adapter->real_hw.vsi_id);
>+ vc_cmd.v_op = VIRTCHNL_OP_DCF_GET_PKG_INFO;
>+ vc_cmd.req_msglen = 0;
>+ vc_cmd.req_msg = NULL;
>+ vc_cmd.rsp_buflen = sizeof(pkg_info);
>+ vc_cmd.rsp_msgbuf = (uint8_t *)&pkg_info;
>
>+ if (ice_dcf_execute_virtchnl_cmd(&dcf_adapter->real_hw, &vc_cmd))
>+ goto pkg_file_direct;
>+
>+ rte_memcpy(&dsn, pkg_info.dsn, sizeof(dsn));
Seems dsn var is redundant, what about using pkg_info.dsn directly?
>+
>+ snprintf(pkg_name, ICE_MAX_PKG_FILENAME_SIZE,
>+ ICE_PKG_FILE_SEARCH_PATH_UPDATES "ice-%016llX.pkg",
>+ (unsigned long long)dsn);
>+ if (!access(pkg_name, 0))
>+ return 0;
>+
>+ snprintf(pkg_name, ICE_MAX_PKG_FILENAME_SIZE,
>+ ICE_PKG_FILE_SEARCH_PATH_DEFAULT "ice-%016llX.pkg",
>+ (unsigned long long)dsn);
>+ if (!access(pkg_name, 0))
>+ return 0;
>+
>+pkg_file_direct:
> snprintf(pkg_name,
> ICE_MAX_PKG_FILENAME_SIZE, "%s", ICE_PKG_FILE_UPDATES);
> if (!access(pkg_name, 0))
>--
>2.26.1
>
> -----Original Message-----
> From: Ye, Xiaolong <xiaolong.ye@intel.com>
> Sent: Friday, April 17, 2020 12:51
> To: Wang, Haiyue <haiyue.wang@intel.com>
> Cc: dev@dpdk.org; Zhang, Qi Z <qi.z.zhang@intel.com>; Yang, Qiming <qiming.yang@intel.com>
> Subject: Re: [PATCH v1] net/ice: check the DSN package file firstly
>
> On 04/16, Haiyue Wang wrote:
> >Align the package file search sequence with PF only for DCF mode. Get
> >the DSN through the virtual channel firstly to check the package file
> >accessible.
>
> check the accessibility of the package file?
This looks better.
>
> >
> >Signed-off-by: Haiyue Wang <haiyue.wang@intel.com>
> >---
> > drivers/net/ice/ice_dcf_parent.c | 30 ++++++++++++++++++++++++++----
> > 1 file changed, 26 insertions(+), 4 deletions(-)
> >
> >diff --git a/drivers/net/ice/ice_dcf_parent.c b/drivers/net/ice/ice_dcf_parent.c
> >index e05b6b3e5..d4b4ededb 100644
> >--- a/drivers/net/ice/ice_dcf_parent.c
> >+++ b/drivers/net/ice/ice_dcf_parent.c
> >@@ -226,12 +226,34 @@ ice_dcf_request_pkg_name(struct ice_hw *hw, char *pkg_name)
> > {
> > struct ice_dcf_adapter *dcf_adapter =
> > container_of(hw, struct ice_dcf_adapter, parent.hw);
> >+ struct virtchnl_pkg_info pkg_info;
> >+ struct dcf_virtchnl_cmd vc_cmd;
> >+ uint64_t dsn;
> >
> >- /* TODO: check with DSN firstly by iAVF */
> >- PMD_INIT_LOG(DEBUG,
> >- "DCF VSI_ID = %u",
> >- dcf_adapter->real_hw.vsi_id);
> >+ vc_cmd.v_op = VIRTCHNL_OP_DCF_GET_PKG_INFO;
> >+ vc_cmd.req_msglen = 0;
> >+ vc_cmd.req_msg = NULL;
> >+ vc_cmd.rsp_buflen = sizeof(pkg_info);
> >+ vc_cmd.rsp_msgbuf = (uint8_t *)&pkg_info;
> >
> >+ if (ice_dcf_execute_virtchnl_cmd(&dcf_adapter->real_hw, &vc_cmd))
> >+ goto pkg_file_direct;
> >+
> >+ rte_memcpy(&dsn, pkg_info.dsn, sizeof(dsn));
>
> Seems dsn var is redundant, what about using pkg_info.dsn directly?
>
pkg_info.dsn is defined as dsn[8], which is designed to align with
old driver. ;-) Now the ice kernel module uses 64bit to format:
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=ceb2f00707f97f8f881d6f253e7123bf5b17d308
> >+
> >+ snprintf(pkg_name, ICE_MAX_PKG_FILENAME_SIZE,
> >+ ICE_PKG_FILE_SEARCH_PATH_UPDATES "ice-%016llX.pkg",
> >+ (unsigned long long)dsn);
> >+ if (!access(pkg_name, 0))
> >+ return 0;
> >+
> >+ snprintf(pkg_name, ICE_MAX_PKG_FILENAME_SIZE,
> >+ ICE_PKG_FILE_SEARCH_PATH_DEFAULT "ice-%016llX.pkg",
> >+ (unsigned long long)dsn);
> >+ if (!access(pkg_name, 0))
> >+ return 0;
> >+
> >+pkg_file_direct:
> > snprintf(pkg_name,
> > ICE_MAX_PKG_FILENAME_SIZE, "%s", ICE_PKG_FILE_UPDATES);
> > if (!access(pkg_name, 0))
> >--
> >2.26.1
> >
> -----Original Message-----
> From: Wang, Haiyue <haiyue.wang@intel.com>
> Sent: Thursday, April 16, 2020 11:11 AM
> To: dev@dpdk.org; Zhang, Qi Z <qi.z.zhang@intel.com>; Yang, Qiming
> <qiming.yang@intel.com>; Ye, Xiaolong <xiaolong.ye@intel.com>
> Cc: Wang, Haiyue <haiyue.wang@intel.com>
> Subject: [PATCH v1] net/ice: check the DSN package file firstly
>
> Align the package file search sequence with PF only for DCF mode. Get the
> DSN through the virtual channel firstly to check the package file accessible.
>
> Signed-off-by: Haiyue Wang <haiyue.wang@intel.com>
> ---
Acked-by: Qi Zhang <qi.z.zhang@intel.com>
On 04/16, Haiyue Wang wrote:
>Align the package file search sequence with PF only for DCF mode. Get
>the DSN through the virtual channel firstly to check the package file
>accessible.
>
>Signed-off-by: Haiyue Wang <haiyue.wang@intel.com>
>---
> drivers/net/ice/ice_dcf_parent.c | 30 ++++++++++++++++++++++++++----
> 1 file changed, 26 insertions(+), 4 deletions(-)
>
>diff --git a/drivers/net/ice/ice_dcf_parent.c b/drivers/net/ice/ice_dcf_parent.c
>index e05b6b3e5..d4b4ededb 100644
>--- a/drivers/net/ice/ice_dcf_parent.c
>+++ b/drivers/net/ice/ice_dcf_parent.c
>@@ -226,12 +226,34 @@ ice_dcf_request_pkg_name(struct ice_hw *hw, char *pkg_name)
> {
> struct ice_dcf_adapter *dcf_adapter =
> container_of(hw, struct ice_dcf_adapter, parent.hw);
>+ struct virtchnl_pkg_info pkg_info;
>+ struct dcf_virtchnl_cmd vc_cmd;
>+ uint64_t dsn;
>
>- /* TODO: check with DSN firstly by iAVF */
>- PMD_INIT_LOG(DEBUG,
>- "DCF VSI_ID = %u",
>- dcf_adapter->real_hw.vsi_id);
>+ vc_cmd.v_op = VIRTCHNL_OP_DCF_GET_PKG_INFO;
>+ vc_cmd.req_msglen = 0;
>+ vc_cmd.req_msg = NULL;
>+ vc_cmd.rsp_buflen = sizeof(pkg_info);
>+ vc_cmd.rsp_msgbuf = (uint8_t *)&pkg_info;
>
>+ if (ice_dcf_execute_virtchnl_cmd(&dcf_adapter->real_hw, &vc_cmd))
>+ goto pkg_file_direct;
>+
>+ rte_memcpy(&dsn, pkg_info.dsn, sizeof(dsn));
>+
>+ snprintf(pkg_name, ICE_MAX_PKG_FILENAME_SIZE,
>+ ICE_PKG_FILE_SEARCH_PATH_UPDATES "ice-%016llX.pkg",
>+ (unsigned long long)dsn);
>+ if (!access(pkg_name, 0))
>+ return 0;
>+
>+ snprintf(pkg_name, ICE_MAX_PKG_FILENAME_SIZE,
>+ ICE_PKG_FILE_SEARCH_PATH_DEFAULT "ice-%016llX.pkg",
>+ (unsigned long long)dsn);
>+ if (!access(pkg_name, 0))
>+ return 0;
>+
>+pkg_file_direct:
> snprintf(pkg_name,
> ICE_MAX_PKG_FILENAME_SIZE, "%s", ICE_PKG_FILE_UPDATES);
> if (!access(pkg_name, 0))
>--
>2.26.1
>
Applied to dpdk-next-net-intel, Thanks.
@@ -226,12 +226,34 @@ ice_dcf_request_pkg_name(struct ice_hw *hw, char *pkg_name)
{
struct ice_dcf_adapter *dcf_adapter =
container_of(hw, struct ice_dcf_adapter, parent.hw);
+ struct virtchnl_pkg_info pkg_info;
+ struct dcf_virtchnl_cmd vc_cmd;
+ uint64_t dsn;
- /* TODO: check with DSN firstly by iAVF */
- PMD_INIT_LOG(DEBUG,
- "DCF VSI_ID = %u",
- dcf_adapter->real_hw.vsi_id);
+ vc_cmd.v_op = VIRTCHNL_OP_DCF_GET_PKG_INFO;
+ vc_cmd.req_msglen = 0;
+ vc_cmd.req_msg = NULL;
+ vc_cmd.rsp_buflen = sizeof(pkg_info);
+ vc_cmd.rsp_msgbuf = (uint8_t *)&pkg_info;
+ if (ice_dcf_execute_virtchnl_cmd(&dcf_adapter->real_hw, &vc_cmd))
+ goto pkg_file_direct;
+
+ rte_memcpy(&dsn, pkg_info.dsn, sizeof(dsn));
+
+ snprintf(pkg_name, ICE_MAX_PKG_FILENAME_SIZE,
+ ICE_PKG_FILE_SEARCH_PATH_UPDATES "ice-%016llX.pkg",
+ (unsigned long long)dsn);
+ if (!access(pkg_name, 0))
+ return 0;
+
+ snprintf(pkg_name, ICE_MAX_PKG_FILENAME_SIZE,
+ ICE_PKG_FILE_SEARCH_PATH_DEFAULT "ice-%016llX.pkg",
+ (unsigned long long)dsn);
+ if (!access(pkg_name, 0))
+ return 0;
+
+pkg_file_direct:
snprintf(pkg_name,
ICE_MAX_PKG_FILENAME_SIZE, "%s", ICE_PKG_FILE_UPDATES);
if (!access(pkg_name, 0))