From 36ba114387e6b262d5a55b397a47e63fd0e75d0a Mon Sep 17 00:00:00 2001 From: Junxian Huang Date: Wed, 2 Aug 2023 16:12:49 +0800 Subject: hikptool/roce: Add roce_global_cfg cmd for global config registers query Add roce_global_cfg cmd for global config registers query Example: hikptool roce_global_cfg -i eth1 Signed-off-by: Junxian Huang --- net/hikp_net_lib.h | 1 + .../roce_ext_common/hikp_roce_ext_common.c | 1 + .../roce_ext_common/hikp_roce_ext_common.h | 1 + .../roce_global_cfg/hikp_roce_global_cfg.c | 97 +++++++++++++++++++ .../roce_global_cfg/hikp_roce_global_cfg.h | 40 ++++++++ 5 files changed, 140 insertions(+) create mode 100644 net/roce/roce_global_cfg/hikp_roce_global_cfg.c create mode 100644 net/roce/roce_global_cfg/hikp_roce_global_cfg.h diff --git a/net/hikp_net_lib.h b/net/hikp_net_lib.h index e60fc15..bdaacb1 100644 --- a/net/hikp_net_lib.h +++ b/net/hikp_net_lib.h @@ -101,6 +101,7 @@ enum roce_cmd_type { GET_ROCEE_TRP_CMD, GET_ROCEE_TSP_CMD, GET_ROCEE_RST_CMD, + GET_ROCEE_GLOBAL_CFG_CMD, }; enum ub_cmd_type { diff --git a/net/roce/roce_ext_common/hikp_roce_ext_common.c b/net/roce/roce_ext_common/hikp_roce_ext_common.c index 01dded5..0ff07dc 100644 --- a/net/roce/roce_ext_common/hikp_roce_ext_common.c +++ b/net/roce/roce_ext_common/hikp_roce_ext_common.c @@ -43,6 +43,7 @@ static const struct cmd_type_info { {GET_ROCEE_TRP_CMD, "TRP", ROCE_HIKP_TRP_REG_NUM_EXT}, {GET_ROCEE_TSP_CMD, "TSP", ROCE_HIKP_TSP_REG_NUM_EXT}, {GET_ROCEE_RST_CMD, "RST", ROCE_HIKP_RST_REG_NUM}, + {GET_ROCEE_GLOBAL_CFG_CMD, "GLOBAL_CFG", ROCE_HIKP_GLOBAL_CFG_REG_NUM}, }; static int get_cmd_info_table_idx(enum roce_cmd_type cmd_type) diff --git a/net/roce/roce_ext_common/hikp_roce_ext_common.h b/net/roce/roce_ext_common/hikp_roce_ext_common.h index 918712f..870a361 100644 --- a/net/roce/roce_ext_common/hikp_roce_ext_common.h +++ b/net/roce/roce_ext_common/hikp_roce_ext_common.h @@ -28,6 +28,7 @@ #define ROCE_HIKP_TRP_REG_NUM_EXT ROCE_MAX_REG_NUM #define ROCE_HIKP_TSP_REG_NUM_EXT ROCE_MAX_REG_NUM #define ROCE_HIKP_RST_REG_NUM ROCE_MAX_REG_NUM +#define ROCE_HIKP_GLOBAL_CFG_REG_NUM ROCE_MAX_REG_NUM struct roce_ext_head { uint8_t total_block_num; diff --git a/net/roce/roce_global_cfg/hikp_roce_global_cfg.c b/net/roce/roce_global_cfg/hikp_roce_global_cfg.c new file mode 100644 index 0000000..49a4a2c --- /dev/null +++ b/net/roce/roce_global_cfg/hikp_roce_global_cfg.c @@ -0,0 +1,97 @@ +/* + * Copyright (c) 2023 Hisilicon Technologies Co., Ltd. + * Hikptool is licensed under Mulan PSL v2. + * You can use this software according to the terms and conditions of the Mulan PSL v2. + * You may obtain a copy of Mulan PSL v2 at: + * http://license.coscl.org.cn/MulanPSL2 + * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, + * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, + * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. + * + * See the Mulan PSL v2 for more details. + */ + +#include "hikp_roce_global_cfg.h" + +static struct cmd_roce_global_cfg_param g_roce_global_cfg_param = { 0 }; + +static int hikp_roce_global_cfg_help(struct major_cmd_ctrl *self, + const char *argv) +{ + printf("\n Usage: %s %s\n", self->cmd_ptr->name, "-i \n"); + printf("\n %s\n", self->cmd_ptr->help_info); + printf(" Options:\n\n"); + printf(" %s, %-25s %s\n", "-h", "--help", "display this help and exit"); + printf(" %s, %-25s %s\n", "-i", "--interface=", "device target, e.g. eth0"); + printf("\n"); + + return 0; +} + +static int hikp_roce_global_cfg_target(struct major_cmd_ctrl *self, + const char *argv) +{ + self->err_no = tool_check_and_get_valid_bdf_id(argv, &(g_roce_global_cfg_param.target)); + if (self->err_no) + snprintf(self->err_str, sizeof(self->err_str), + "Unknown device %s.\n", argv); + + return self->err_no; +} + +static int hikp_roce_global_cfg_get_data(struct hikp_cmd_ret **cmd_ret, + uint32_t block_id) +{ + struct hikp_cmd_header req_header = { 0 }; + struct roce_global_cfg_req_param req_data; + uint32_t req_size; + int ret; + + req_data.bdf = g_roce_global_cfg_param.target.bdf; + req_data.block_id = block_id; + + req_size = sizeof(struct roce_global_cfg_req_param); + hikp_cmd_init(&req_header, ROCE_MOD, GET_ROCEE_GLOBAL_CFG_CMD, + g_roce_global_cfg_param.sub_cmd); + *cmd_ret = hikp_cmd_alloc(&req_header, &req_data, req_size); + ret = hikp_rsp_normal_check(*cmd_ret); + if (ret) + printf("hikptool roce_global_cfg cmd_ret malloc failed, sub_cmd = %u, ret = %d.\n", + g_roce_global_cfg_param.sub_cmd, ret); + + return ret; +} + +static void hikp_roce_global_cfg_execute(struct major_cmd_ctrl *self) +{ + enum roce_global_cfg_cmd_type sub_cmds[] = { + ROCE_GLB_GENAC, + ROCE_GLB_TRP_BANK, + ROCE_GLB_TRP_RX, + ROCE_GLB_TPP_M, + ROCE_GLB_QMM, + ROCE_GLB_TGP_TMP, + ROCE_GLB_TDP_M, + ROCE_GLB_NICL, + }; + int i; + + for (i = 0; i < HIKP_ARRAY_SIZE(sub_cmds); i++) { + g_roce_global_cfg_param.sub_cmd = sub_cmds[i]; + hikp_roce_ext_execute(self, GET_ROCEE_GLOBAL_CFG_CMD, + hikp_roce_global_cfg_get_data); + } +} + +static void cmd_roce_global_cfg_init(void) +{ + struct major_cmd_ctrl *major_cmd = get_major_cmd(); + + major_cmd->option_count = 0; + major_cmd->execute = hikp_roce_global_cfg_execute; + + cmd_option_register("-h", "--help", false, hikp_roce_global_cfg_help); + cmd_option_register("-i", "--interface", true, hikp_roce_global_cfg_target); +} + +HIKP_CMD_DECLARE("roce_global_cfg", "get roce_global_cfg registers information", cmd_roce_global_cfg_init); diff --git a/net/roce/roce_global_cfg/hikp_roce_global_cfg.h b/net/roce/roce_global_cfg/hikp_roce_global_cfg.h new file mode 100644 index 0000000..66e7fb8 --- /dev/null +++ b/net/roce/roce_global_cfg/hikp_roce_global_cfg.h @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2023 Hisilicon Technologies Co., Ltd. + * Hikptool is licensed under Mulan PSL v2. + * You can use this software according to the terms and conditions of the Mulan PSL v2. + * You may obtain a copy of Mulan PSL v2 at: + * http://license.coscl.org.cn/MulanPSL2 + * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, + * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, + * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. + * + * See the Mulan PSL v2 for more details. + */ + +#ifndef __HIKP_ROCE_GLOBAL_CFG_H__ +#define __HIKP_ROCE_GLOBAL_CFG_H__ + +#include "hikp_roce_ext_common.h" + +struct cmd_roce_global_cfg_param { + struct tool_target target; + uint32_t sub_cmd; +}; + +struct roce_global_cfg_req_param { + struct bdf_t bdf; + uint32_t block_id; +}; + +enum roce_global_cfg_cmd_type { + ROCE_GLB_GENAC = 0, + ROCE_GLB_TRP_BANK, + ROCE_GLB_TRP_RX, + ROCE_GLB_TPP_M, + ROCE_GLB_QMM, + ROCE_GLB_TGP_TMP, + ROCE_GLB_TDP_M, + ROCE_GLB_NICL, +}; + +#endif /* __HIKP_ROCE_GLOBAL_CFG_H__ */ -- 2.30.0