optimize mtu set ops.
Signed-off-by: Junlong Wang <wang.junlong1@zte.com.cn>
---
drivers/net/zxdh/zxdh_ethdev_ops.c | 8 ++---
drivers/net/zxdh/zxdh_msg.c | 42 ++++++++++++++++++++++++++
drivers/net/zxdh/zxdh_tables.h | 47 +++++++++++++++++++++++++++---
3 files changed, 89 insertions(+), 8 deletions(-)
diff --git a/drivers/net/zxdh/zxdh_ethdev_ops.c b/drivers/net/zxdh/zxdh_ethdev_ops.c
index 14d45f37b5..83b77571d7 100644
--- a/drivers/net/zxdh/zxdh_ethdev_ops.c
+++ b/drivers/net/zxdh/zxdh_ethdev_ops.c
@@ -151,12 +151,12 @@ static int32_t zxdh_config_port_status(struct rte_eth_dev *dev, uint16_t link_st
struct zxdh_port_attr_set_msg *port_attr_msg = &msg_info.data.port_attr_msg;
zxdh_msg_head_build(hw, ZXDH_PORT_ATTRS_SET, &msg_info);
- port_attr_msg->mode = ZXDH_PORT_ATTR_IS_UP_FLAG;
+ port_attr_msg->mode = ZXDH_PORT_VPORT_IS_UP_FLAG;
port_attr_msg->value = link_status;
ret = zxdh_vf_send_msg_to_pf(dev, &msg_info, sizeof(msg_info), NULL, 0);
if (ret) {
PMD_DRV_LOG(ERR, "Failed to send msg: port 0x%x msg type %d",
- hw->vport.vport, ZXDH_PORT_ATTR_IS_UP_FLAG);
+ hw->vport.vport, ZXDH_PORT_VPORT_IS_UP_FLAG);
return ret;
}
}
@@ -1559,12 +1559,12 @@ int zxdh_dev_mtu_set(struct rte_eth_dev *dev, uint16_t new_mtu)
struct zxdh_port_attr_set_msg *attr_msg = &msg_info.data.port_attr_msg;
zxdh_msg_head_build(hw, ZXDH_PORT_ATTRS_SET, &msg_info);
- attr_msg->mode = ZXDH_PORT_MTU_EN_FLAG;
+ attr_msg->mode = ZXDH_PORT_MTU_OFFLOAD_EN_OFF_FLAG;
attr_msg->value = 1;
ret = zxdh_vf_send_msg_to_pf(dev, &msg_info, sizeof(msg_info), NULL, 0);
if (ret) {
PMD_DRV_LOG(ERR, "Failed to send msg: port 0x%x msg type %d",
- hw->vport.vport, ZXDH_PORT_MTU_EN_FLAG);
+ hw->vport.vport, ZXDH_PORT_MTU_OFFLOAD_EN_OFF_FLAG);
return ret;
}
attr_msg->mode = ZXDH_PORT_MTU_FLAG;
diff --git a/drivers/net/zxdh/zxdh_msg.c b/drivers/net/zxdh/zxdh_msg.c
index 9908c4912e..b99bd342ac 100644
--- a/drivers/net/zxdh/zxdh_msg.c
+++ b/drivers/net/zxdh/zxdh_msg.c
@@ -1648,6 +1648,47 @@ zxdh_vf_rss_table_get(struct zxdh_hw *hw, uint16_t vport, void *cfg_data __rte_u
return ret;
}
+static int
+zxdh_vf_port_attr_set(struct zxdh_hw *pf_hw, uint16_t vport, void *cfg_data,
+ struct zxdh_msg_reply_body *res_info __rte_unused, uint16_t *res_len __rte_unused)
+{
+ RTE_ASSERT(!cfg_data || !pf_hw);
+ if (res_info)
+ *res_len = 0;
+ struct zxdh_port_attr_set_msg *attr_msg = (struct zxdh_port_attr_set_msg *)cfg_data;
+ union zxdh_virport_num port = {.vport = vport};
+ struct zxdh_port_attr_table port_attr = {0};
+
+ int ret = zxdh_get_port_attr(pf_hw, vport, &port_attr);
+ if (ret) {
+ PMD_DRV_LOG(ERR, "get vport 0x%x(%d) attr failed", vport, port.vfid);
+ return ret;
+ }
+ switch (attr_msg->mode) {
+ case ZXDH_PORT_BASE_QID_FLAG:
+ port_attr.port_base_qid = attr_msg->value;
+ break;
+ case ZXDH_PORT_MTU_OFFLOAD_EN_OFF_FLAG:
+ port_attr.mtu_enable = attr_msg->value;
+ break;
+ case ZXDH_PORT_MTU_FLAG:
+ port_attr.mtu = attr_msg->value;
+ break;
+ case ZXDH_PORT_VPORT_IS_UP_FLAG:
+ port_attr.is_up = attr_msg->value;
+ break;
+ default:
+ PMD_DRV_LOG(ERR, "unsupport attr 0x%x set", attr_msg->mode);
+ return -1;
+ }
+ ret = zxdh_set_port_attr(pf_hw, vport, &port_attr);
+ if (ret) {
+ PMD_DRV_LOG(ERR, "set port attr failed. code:%d", ret);
+ return ret;
+ }
+ return ret;
+}
+
zxdh_msg_process_callback zxdh_proc_cb[] = {
[ZXDH_NULL] = NULL,
[ZXDH_VF_PORT_INIT] = zxdh_vf_port_init,
@@ -1663,6 +1704,7 @@ zxdh_msg_process_callback zxdh_proc_cb[] = {
[ZXDH_RSS_HF_SET] = zxdh_vf_rss_hf_set,
[ZXDH_RSS_HF_GET] = zxdh_vf_rss_hf_get,
[ZXDH_VLAN_OFFLOAD] = zxdh_vf_set_vlan_offload,
+ [ZXDH_PORT_ATTRS_SET] = zxdh_vf_port_attr_set,
};
static inline int
diff --git a/drivers/net/zxdh/zxdh_tables.h b/drivers/net/zxdh/zxdh_tables.h
index 453e288f8d..67294105e9 100644
--- a/drivers/net/zxdh/zxdh_tables.h
+++ b/drivers/net/zxdh/zxdh_tables.h
@@ -7,10 +7,49 @@
#include <stdint.h>
-#define ZXDH_PORT_MTU_FLAG 9
-#define ZXDH_PORT_BASE_QID_FLAG 10
-#define ZXDH_PORT_ATTR_IS_UP_FLAG 35
-#define ZXDH_PORT_MTU_EN_FLAG 42
+#define ZXDH_PORT_VHCA_FLAG 1
+#define ZXDH_PORT_RSS_HASH_FACTOR_FLAG 3
+#define ZXDH_PORT_HASH_ALG_FLAG 4
+#define ZXDH_PORT_PHY_PORT_FLAG 5
+#define ZXDH_PORT_LAG_ID_FLAG 6
+
+#define ZXDH_PORT_PF_VQM_VFID_FLAG 8
+
+#define ZXDH_PORT_MTU_FLAG 10
+#define ZXDH_PORT_BASE_QID_FLAG 11
+#define ZXDH_PORT_HASH_SEARCH_INDEX_FLAG 12
+
+#define ZXDH_PORT_EGRESS_METER_EN_OFF_FLAG 14
+#define ZXDH_PORT_EGRESS_MODE_FLAG 16
+#define ZXDH_PORT_INGRESS_METER_EN_OFF_FLAG 15
+#define ZXDH_PORT_INGRESS_MODE_FLAG 17
+#define ZXDH_PORT_EGRESS_TM_ENABLE_FLAG 18
+#define ZXDH_PORT_INGRESS_TM_ENABLE_FLAG 19
+#define ZXDH_PORT_SPOOFCHK_EN_OFF_FLAG 21
+#define ZXDH_PORT_INLINE_SEC_OFFLOAD_FLAG 22
+#define ZXDH_PORT_FD_EN_OFF_FLAG 23
+#define ZXDH_PORT_LAG_EN_OFF_FLAG 24
+#define ZXDH_PORT_VEPA_EN_OFF_FLAG 25
+#define ZXDH_PORT_IS_VF_FLAG 26
+#define ZXDH_PORT_VIRTION_VERSION_FLAG 27
+#define ZXDH_PORT_VIRTION_EN_OFF_FLAG 28
+
+#define ZXDH_PORT_ACCELERATOR_OFFLOAD_FLAG_FLAG 29
+#define ZXDH_PORT_LRO_OFFLOAD_FLAG 30
+#define ZXDH_PORT_IP_FRAGMENT_OFFLOAD_FLAG 31
+#define ZXDH_PORT_TCP_UDP_CHKSUM_FLAG 32
+#define ZXDH_PORT_IP_CHKSUM_FLAG 33
+#define ZXDH_PORT_OUTER_IP_CHECKSUM_OFFLOAD_FLAG 34
+#define ZXDH_PORT_VPORT_IS_UP_FLAG 35
+#define ZXDH_PORT_BUSINESS_EN_OFF_FLAG 36
+
+#define ZXDH_PORT_HW_BOND_EN_OFF_FLAG 37
+#define ZXDH_PORT_RDMA_OFFLOAD_EN_OFF_FLAG 38
+#define ZXDH_PORT_PROMISC_EN_FLAG 39
+#define ZXDH_PORT_VLAN_OFFLOAD_EN_FLAG 40
+#define ZXDH_PORT_BUSINESS_VLAN_OFFLOAD_EN_FLAG 41
+#define ZXDH_PORT_RSS_EN_OFF_FLAG 42
+#define ZXDH_PORT_MTU_OFFLOAD_EN_OFF_FLAG 43
#define ZXDH_MTU_STATS_EGRESS_BASE 0x8481
#define ZXDH_MTU_STATS_INGRESS_BASE 0x8981
--
2.27.0