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