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