5 Star 0 Fork 7

src-openEuler/hikptool

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
0087-Fix-the-logic-of-obtaining-statistics-on-flow-contro.patch 6.05 KB
一键复制 编辑 原始数据 按行查看 历史
From 261fdd1cc832989c60b3940cd8b2aa6593bc94ea Mon Sep 17 00:00:00 2001
From: Yuyu Li <liyuyu6@huawei.com>
Date: Tue, 12 Nov 2024 20:17:06 +0800
Subject: [PATCH 25/27] Fix the logic of obtaining statistics on flow control
storm suppression
Previously, regardless of the direction specified by -d, FW would return the statistics
of flow control storm suppression in both directions. Now it only returns the statistic
in the specified direction. An example is shown:
hikptool nic_qos -i eth6 -g pfc_storm_para -d rx
before:
PFC STORM Information:
direction: rx
enabled: on
period: 2000ms
pfc threshold: 1000ms
recovery period: 500ms
rx storm suppression count: 14
after:
PFC STORM Information:
direction: rx
enabled: on
period: 2000ms
pfc threshold: 1000ms
recovery period: 500ms
storm count: 14
Signed-off-by: Yuyu Li <liyuyu6@huawei.com>
---
net/nic/nic_qos/hikp_nic_qos.c | 32 ++++++++++++++++++++++----------
net/nic/nic_qos/hikp_nic_qos.h | 14 +++++++++-----
2 files changed, 31 insertions(+), 15 deletions(-)
diff --git a/net/nic/nic_qos/hikp_nic_qos.c b/net/nic/nic_qos/hikp_nic_qos.c
index 81eb0ba..32f251e 100644
--- a/net/nic/nic_qos/hikp_nic_qos.c
+++ b/net/nic/nic_qos/hikp_nic_qos.c
@@ -56,7 +56,8 @@ static int hikp_nic_qos_cmd_help(struct major_cmd_ctrl *self, const char *argv)
static void hikp_nic_qos_show_pkt_buf(const void *data)
{
- struct nic_pkt_buf_info *pkt_buf = (struct nic_pkt_buf_info *)data;
+ struct qos_cmd_info *qos_info_pkt = (struct qos_cmd_info *)data;
+ struct nic_pkt_buf_info *pkt_buf = (struct nic_pkt_buf_info *)&qos_info_pkt->info;
struct nic_shared_buf *share_buf = &pkt_buf->share_buf;
struct nic_priv_buf *priv_buf = pkt_buf->priv_buf;
uint16_t tc_no;
@@ -88,11 +89,12 @@ static void hikp_nic_qos_show_pkt_buf(const void *data)
static void hikp_nic_qos_show_dcb_info(const void *data)
{
- struct nic_dcb_info *dcb = (struct nic_dcb_info *)data;
+ struct qos_cmd_info *qos_info_dcb = (struct qos_cmd_info *)data;
+ struct nic_dcb_info *dcb = (struct nic_dcb_info *)&qos_info_dcb->info;
struct nic_pfc_info *pfc = &dcb->pfc;
struct nic_ets_info *ets = &dcb->ets;
- uint16_t up;
uint16_t tc_no;
+ uint16_t up;
printf("PFC configuration\n");
printf(" PFC enable:");
@@ -125,7 +127,8 @@ static void hikp_nic_qos_show_dcb_info(const void *data)
static void hikp_nic_qos_show_pause_info(const void *data)
{
- struct nic_pause_info *pause = (struct nic_pause_info *)data;
+ struct qos_cmd_info *qos_info_pause = (struct qos_cmd_info *)data;
+ struct nic_pause_info *pause = (struct nic_pause_info *)&qos_info_pause->info;
printf("PAUSE Information\n");
if (pause->type == HIKP_NONE_PAUSE)
@@ -143,8 +146,10 @@ static void hikp_nic_qos_show_pause_info(const void *data)
static void hikp_nic_qos_show_pfc_storm_para(const void *data)
{
+ struct qos_cmd_info *qos_info_pfc = (struct qos_cmd_info *)data;
struct nic_pfc_storm_para *pfc_storm_para =
- (struct nic_pfc_storm_para *)data;
+ (struct nic_pfc_storm_para *)&qos_info_pfc->info;
+ uint32_t length = qos_info_pfc->length;
printf("PFC STORM Information:\n");
printf("direction: %s\n", pfc_storm_para->dir ? "tx" : "rx");
@@ -155,6 +160,11 @@ static void hikp_nic_qos_show_pfc_storm_para(const void *data)
printf("check times: %u\n", pfc_storm_para->times) :
printf("pfc threshold: %ums\n", pfc_storm_para->times);
printf("recovery period: %ums\n", pfc_storm_para->recovery_period_ms);
+
+ if (length < sizeof(struct nic_pfc_storm_para))
+ return;
+
+ printf("storm count: %u\n", pfc_storm_para->storm_count);
}
static int hikp_nic_qos_get_blk(struct hikp_cmd_header *req_header,
@@ -192,11 +202,11 @@ out:
}
static int hikp_nic_query_qos_feature(struct hikp_cmd_header *req_header, const struct bdf_t *bdf,
- union nic_qos_feature_info *data)
+ struct qos_cmd_info *qcmd_info)
{
+ size_t buf_len = sizeof(qcmd_info->info);
struct nic_qos_rsp_head rsp_head = {0};
struct nic_qos_req_para req_data;
- size_t buf_len = sizeof(*data);
uint32_t total_blk_size;
uint8_t total_blk_num;
uint8_t blk_id = 0;
@@ -207,7 +217,7 @@ static int hikp_nic_query_qos_feature(struct hikp_cmd_header *req_header, const
req_data.block_id = blk_id;
req_data.dir = g_qos_param.dir;
- ret = hikp_nic_qos_get_blk(req_header, &req_data, data, buf_len, &rsp_head);
+ ret = hikp_nic_qos_get_blk(req_header, &req_data, &qcmd_info->info, buf_len, &rsp_head);
if (ret != 0)
return ret;
@@ -220,13 +230,15 @@ static int hikp_nic_query_qos_feature(struct hikp_cmd_header *req_header, const
req_data.dir = g_qos_param.dir;
ret = hikp_nic_qos_get_blk(req_header, &req_data,
- (uint8_t *)data + total_blk_size,
+ (uint8_t *)&qcmd_info->info + total_blk_size,
buf_len - total_blk_size, &rsp_head);
if (ret != 0)
return ret;
total_blk_size += rsp_head.cur_blk_size;
}
+ qcmd_info->length = total_blk_size;
+
return ret;
}
@@ -234,9 +246,9 @@ static void hikp_nic_qos_cmd_execute(struct major_cmd_ctrl *self)
{
char *revision_id = g_qos_param.revision_id;
struct bdf_t *bdf = &g_qos_param.target.bdf;
- union nic_qos_feature_info qos_data = {0};
struct hikp_cmd_header req_header = {0};
const struct qos_feature_cmd *qos_cmd;
+ struct qos_cmd_info qos_data = {0};
int ret;
if (bdf->dev_id != 0) {
diff --git a/net/nic/nic_qos/hikp_nic_qos.h b/net/nic/nic_qos/hikp_nic_qos.h
index d55970a..77fbdd9 100644
--- a/net/nic/nic_qos/hikp_nic_qos.h
+++ b/net/nic/nic_qos/hikp_nic_qos.h
@@ -57,6 +57,7 @@ struct nic_pfc_storm_para {
uint32_t period_ms;
uint32_t times;
uint32_t recovery_period_ms;
+ uint32_t storm_count;
};
struct nic_ets_info {
@@ -87,11 +88,14 @@ struct nic_pause_info {
uint16_t rsv;
};
-union nic_qos_feature_info {
- struct nic_pkt_buf_info pkt_buf;
- struct nic_dcb_info dcb;
- struct nic_pause_info pause;
- struct nic_pfc_storm_para pfc_storm_para;
+struct qos_cmd_info {
+ uint32_t length;
+ union nic_qos_feature_info {
+ struct nic_pkt_buf_info pkt_buf;
+ struct nic_dcb_info dcb;
+ struct nic_pause_info pause;
+ struct nic_pfc_storm_para pfc_storm_para;
+ } info;
};
struct nic_qos_rsp_head {
--
2.45.0.windows.1
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/src-openeuler/hikptool.git
git@gitee.com:src-openeuler/hikptool.git
src-openeuler
hikptool
hikptool
master

搜索帮助