[PATCH v2 10/16] net/zxdh: optimize MTU set ops

Junlong Wang wang.junlong1 at zte.com.cn
Fri Feb 21 03:03:38 CET 2025


optimize MTU set ops.

Signed-off-by: Junlong Wang <wang.junlong1 at zte.com.cn>
---
 drivers/net/zxdh/zxdh_ethdev_ops.c |  8 ++---
 drivers/net/zxdh/zxdh_msg.c        | 42 +++++++++++++++++++++++++
 drivers/net/zxdh/zxdh_tables.h     | 49 +++++++++++++++++++++++++++---
 3 files changed, 90 insertions(+), 9 deletions(-)

diff --git a/drivers/net/zxdh/zxdh_ethdev_ops.c b/drivers/net/zxdh/zxdh_ethdev_ops.c
index 8b51877489..5398607c6e 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 efa28e7b17..9f59b13bf3 100644
--- a/drivers/net/zxdh/zxdh_msg.c
+++ b/drivers/net/zxdh/zxdh_msg.c
@@ -1670,6 +1670,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, "unsupported 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,
@@ -1686,6 +1727,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 fe1de63f5c..cd666a9251 100644
--- a/drivers/net/zxdh/zxdh_tables.h
+++ b/drivers/net/zxdh/zxdh_tables.h
@@ -7,11 +7,6 @@
 
 #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
-
 /* eram */
 #define ZXDH_SDT_VPORT_ATT_TABLE          1
 
@@ -26,6 +21,50 @@
 #define ZXDH_SDT_MC_TABLE2                78
 #define ZXDH_SDT_MC_TABLE3                79
 
+#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
 #define ZXDH_BROAD_STATS_EGRESS_BASE      0xC902
-- 
2.27.0
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mails.dpdk.org/archives/dev/attachments/20250221/ce5e5b38/attachment-0001.htm>


More information about the dev mailing list