Add dev_id to the parameter of plcr function<br />to support multi card configuration.<br /> <br />Signed-off-by: Bingbin Chen <chen.bingbin@zte.com.cn> <br />---<br /> drivers/net/zxdh/zxdh_msg.c |   3 +-<br /> drivers/net/zxdh/zxdh_mtr.c |   8 +-<br /> drivers/net/zxdh/zxdh_np.c  | 251 +++++++++++++++++++++++-------------<br /> drivers/net/zxdh/zxdh_np.h  |   8 +-<br /> 4 files changed, 173 insertions(+), 97 deletions(-)<br /> <br />diff --git a/drivers/net/zxdh/zxdh_msg.c b/drivers/net/zxdh/zxdh_msg.c<br />index 96ad638e83..f43f272cff 100644<br />--- a/drivers/net/zxdh/zxdh_msg.c<br />+++ b/drivers/net/zxdh/zxdh_msg.c<br />@@ -2043,7 +2043,8 @@ zxdh_vf_mtr_hw_profile_cfg(struct zxdh_hw *pf_hw __rte_unused,<br />         (struct zxdh_plcr_profile_cfg *)cfg_data;<br />     union zxdh_offload_profile_cfg *plcr_param = &zxdh_plcr_profile_cfg->plcr_param;<br />  <br />-    ret = zxdh_np_car_profile_cfg_set(vport,<br />+    ret = zxdh_np_car_profile_cfg_set(pf_hw->dev_id,<br />+        vport,<br />         zxdh_plcr_profile_cfg->car_type,<br />         zxdh_plcr_profile_cfg->packet_mode,<br />         zxdh_plcr_profile_cfg->hw_profile_id,<br />diff --git a/drivers/net/zxdh/zxdh_mtr.c b/drivers/net/zxdh/zxdh_mtr.c<br />index 3797a5b29b..809456d73f 100644<br />--- a/drivers/net/zxdh/zxdh_mtr.c<br />+++ b/drivers/net/zxdh/zxdh_mtr.c<br />@@ -281,7 +281,7 @@ zxdh_hw_profile_free_direct(struct rte_eth_dev *dev, ZXDH_PROFILE_TYPE car_type,<br /> {<br />     struct zxdh_hw *hw = dev->data->dev_private;<br />     uint16_t vport = hw->vport.vport;<br />-    int ret = zxdh_np_car_profile_id_delete(vport, car_type,<br />+    int ret = zxdh_np_car_profile_id_delete(hw->dev_id, vport, car_type,<br />             (uint64_t)hw_profile_id);<br />     if (ret) {<br />         PMD_DRV_LOG(ERR, "port %u free hw profile %u failed", vport, hw_profile_id);<br />@@ -299,7 +299,7 @@ zxdh_hw_profile_alloc_direct(struct rte_eth_dev *dev, ZXDH_PROFILE_TYPE car_type<br />     uint64_t profile_id = HW_PROFILE_MAX;<br />     struct zxdh_hw *hw = dev->data->dev_private;<br />     uint16_t vport = hw->vport.vport;<br />-    int ret = zxdh_np_car_profile_id_add(vport, car_type, &profile_id);<br />+    int ret = zxdh_np_car_profile_id_add(hw->dev_id, vport, car_type, &profile_id);<br />  <br />     if (ret) {<br />         PMD_DRV_LOG(ERR, "port %u alloc hw profile failed", vport);<br />@@ -551,7 +551,9 @@ zxdh_hw_profile_config_direct(struct rte_eth_dev *dev __rte_unused,<br />     struct zxdh_meter_profile *mp,<br />     struct rte_mtr_error *error)<br /> {<br />-    int ret = zxdh_np_car_profile_cfg_set(mp->hw_profile_owner_vport,<br />+    struct zxdh_hw *hw = dev->data->dev_private;<br />+    int ret = zxdh_np_car_profile_cfg_set(hw->dev_id,<br />+        mp->hw_profile_owner_vport,<br />         car_type, mp->profile.packet_mode,<br />         (uint32_t)hw_profile_id, &mp->plcr_param);<br />     if (ret) {<br />diff --git a/drivers/net/zxdh/zxdh_np.c b/drivers/net/zxdh/zxdh_np.c<br />index 0303d4885f..0238c78d06 100644<br />--- a/drivers/net/zxdh/zxdh_np.c<br />+++ b/drivers/net/zxdh/zxdh_np.c<br />@@ -2287,6 +2287,8 @@ zxdh_np_dev_add(uint32_t  dev_id, ZXDH_DEV_TYPE_E dev_type,<br />  <br />     rte_spinlock_init(&p_dev_info->dtb_spinlock.spinlock);<br />  <br />+    rte_spinlock_init(&p_dev_info->smmu0_spinlock.spinlock);<br />+<br />     for (i = 0; i < ZXDH_DTB_QUEUE_NUM_MAX; i++)<br />         rte_spinlock_init(&p_dev_info->dtb_queue_spinlock[i].spinlock);<br />  <br />@@ -3328,6 +3330,32 @@ zxdh_np_reg_read(uint32_t dev_id, uint32_t reg_no,<br />     return rc;<br /> }<br />  <br />+static uint32_t<br />+zxdh_np_reg_read32(uint32_t dev_id, uint32_t reg_no,<br />+    uint32_t m_offset, uint32_t n_offset, uint32_t *p_data)<br />+{<br />+    uint32_t rc = 0;<br />+    uint32_t addr = 0;<br />+    ZXDH_REG_T *p_reg_info = &g_dpp_reg_info[reg_no];<br />+    uint32_t p_buff[ZXDH_REG_DATA_MAX] = {0};<br />+    uint32_t reg_real_no = p_reg_info->reg_no;<br />+    uint32_t reg_type = p_reg_info->flags;<br />+    uint32_t reg_module = p_reg_info->module_no;<br />+<br />+    addr = zxdh_np_reg_get_reg_addr(reg_no, m_offset, n_offset);<br />+<br />+    if (reg_module == DTB4K) {<br />+        rc = p_reg_info->p_read_fun(dev_id, addr, p_data);<br />+        ZXDH_COMM_CHECK_DEV_RC(dev_id, rc, "p_reg_info->p_read_fun");<br />+    } else {<br />+        rc = zxdh_np_agent_channel_reg_read(dev_id, reg_type, reg_real_no, 4, addr, p_buff);<br />+        ZXDH_COMM_CHECK_DEV_RC(dev_id, rc, "zxdh_np_agent_channel_reg_read");<br />+        *p_data = p_buff[0];<br />+    }<br />+<br />+    return rc;<br />+}<br />+<br /> static uint32_t<br /> zxdh_np_dtb_queue_vm_info_get(uint32_t dev_id,<br />         uint32_t queue_id,<br />@@ -10374,9 +10402,9 @@ zxdh_np_se_done_status_check(uint32_t dev_id, uint32_t reg_no, uint32_t pos)<br />     uint32_t done_flag = 0;<br />  <br />     while (!done_flag) {<br />-        rc = zxdh_np_reg_read(dev_id, reg_no, 0, 0, &data);<br />+        rc = zxdh_np_reg_read32(dev_id, reg_no, 0, 0, &data);<br />         if (rc != 0) {<br />-            PMD_DRV_LOG(ERR, " [ErrorCode:0x%x] !-- zxdh_np_reg_read Fail!", rc);<br />+            PMD_DRV_LOG(ERR, "[ErrorCode:0x%x]!-- zxdh_np_reg_read32 Fail!", rc);<br />             return rc;<br />         }<br />  <br />@@ -10402,15 +10430,26 @@ zxdh_np_se_smmu0_ind_read(uint32_t dev_id,<br />                         uint32_t rd_clr_mode,<br />                         uint32_t *p_data)<br /> {<br />-    uint32_t rc = 0;<br />+    uint32_t rc = ZXDH_OK;<br />     uint32_t i = 0;<br />     uint32_t row_index = 0;<br />     uint32_t col_index = 0;<br />     uint32_t temp_data[4] = {0};<br />     uint32_t *p_temp_data = NULL;<br />     ZXDH_SMMU0_SMMU0_CPU_IND_CMD_T cpu_ind_cmd = {0};<br />+    ZXDH_SPINLOCK_T *p_ind_spinlock = NULL;<br />+<br />+    rc = zxdh_np_dev_opr_spinlock_get(dev_id, ZXDH_DEV_SPINLOCK_T_SMMU0, &p_ind_spinlock);<br />+    ZXDH_COMM_CHECK_DEV_RC(dev_id, rc, "zxdh_np_dev_opr_spinlock_get");<br />+<br />+    rte_spinlock_lock(&p_ind_spinlock->spinlock);<br />  <br />     rc = zxdh_np_se_done_status_check(dev_id, ZXDH_SMMU0_SMMU0_WR_ARB_CPU_RDYR, 0);<br />+    if (rc != ZXDH_OK) {<br />+        PMD_DRV_LOG(ERR, "se done status check failed, rc=0x%x.", rc);<br />+        rte_spinlock_unlock(&p_ind_spinlock->spinlock);<br />+        return ZXDH_ERR;<br />+    }<br />  <br />     if (rd_clr_mode == ZXDH_RD_MODE_HOLD) {<br />         cpu_ind_cmd.cpu_ind_rw = ZXDH_SE_OPR_RD;<br />@@ -10419,42 +10458,47 @@ zxdh_np_se_smmu0_ind_read(uint32_t dev_id,<br />  <br />         switch (rd_mode) {<br />         case ZXDH_ERAM128_OPR_128b:<br />-            if ((0xFFFFFFFF - (base_addr)) < (index))<br />+            if ((0xFFFFFFFF - (base_addr)) < (index)) {<br />+                rte_spinlock_unlock(&p_ind_spinlock->spinlock);<br />+                PMD_DRV_LOG(ERR, "index 0x%x is invalid!", index);<br />                 return ZXDH_PAR_CHK_INVALID_INDEX;<br />-<br />+            }<br />             if (base_addr + index > ZXDH_SE_SMMU0_ERAM_ADDR_NUM_TOTAL - 1) {<br />-                PMD_DRV_LOG(ERR, "%s : index out of range !", __func__);<br />-                return -1;<br />+                PMD_DRV_LOG(ERR, "index out of range!");<br />+                rte_spinlock_unlock(&p_ind_spinlock->spinlock);<br />+                return ZXDH_ERR;<br />             }<br />-<br />             row_index = (index << 7) & ZXDH_ERAM128_BADDR_MASK;<br />             break;<br />         case ZXDH_ERAM128_OPR_64b:<br />             if ((base_addr + (index >> 1)) > ZXDH_SE_SMMU0_ERAM_ADDR_NUM_TOTAL - 1) {<br />-                PMD_DRV_LOG(ERR, "%s : index out of range !", __func__);<br />-                return -1;<br />+                PMD_DRV_LOG(ERR, "index out of range!");<br />+                rte_spinlock_unlock(&p_ind_spinlock->spinlock);<br />+                return ZXDH_ERR;<br />             }<br />-<br />             row_index = (index << 6) & ZXDH_ERAM128_BADDR_MASK;<br />             col_index = index & 0x1;<br />             break;<br />         case ZXDH_ERAM128_OPR_32b:<br />             if ((base_addr + (index >> 2)) > ZXDH_SE_SMMU0_ERAM_ADDR_NUM_TOTAL - 1) {<br />-                PMD_DRV_LOG(ERR, "%s : index out of range !", __func__);<br />-                return -1;<br />+                PMD_DRV_LOG(ERR, "index out of range!");<br />+                rte_spinlock_unlock(&p_ind_spinlock->spinlock);<br />+                return ZXDH_ERR;<br />             }<br />-<br />             row_index = (index << 5) & ZXDH_ERAM128_BADDR_MASK;<br />             col_index = index & 0x3;<br />             break;<br />         case ZXDH_ERAM128_OPR_1b:<br />             if ((base_addr + (index >> 7)) > ZXDH_SE_SMMU0_ERAM_ADDR_NUM_TOTAL - 1) {<br />-                PMD_DRV_LOG(ERR, "%s : index out of range !", __func__);<br />-                return -1;<br />+                PMD_DRV_LOG(ERR, "index out of range!");<br />+                rte_spinlock_unlock(&p_ind_spinlock->spinlock);<br />+                return ZXDH_ERR;<br />             }<br />             row_index = index & ZXDH_ERAM128_BADDR_MASK;<br />             col_index = index & 0x7F;<br />             break;<br />+        default:<br />+            break;<br />         }<br />  <br />         cpu_ind_cmd.cpu_ind_addr = ((base_addr << 7) & ZXDH_ERAM128_BADDR_MASK) + row_index;<br />@@ -10465,56 +10509,77 @@ zxdh_np_se_smmu0_ind_read(uint32_t dev_id,<br />         switch (rd_mode) {<br />         case ZXDH_ERAM128_OPR_128b:<br />             if ((0xFFFFFFFF - (base_addr)) < (index)) {<br />-                PMD_DRV_LOG(ERR, "%s : index 0x%x is invalid!", __func__, index);<br />+                PMD_DRV_LOG(ERR, "index 0x%x is invalid!", index);<br />+                rte_spinlock_unlock(&p_ind_spinlock->spinlock);<br />                 return ZXDH_PAR_CHK_INVALID_INDEX;<br />             }<br />             if (base_addr + index > ZXDH_SE_SMMU0_ERAM_ADDR_NUM_TOTAL - 1) {<br />-                PMD_DRV_LOG(ERR, "%s : index out of range !", __func__);<br />-                return -1;<br />+                PMD_DRV_LOG(ERR, "index out of range!");<br />+                rte_spinlock_unlock(&p_ind_spinlock->spinlock);<br />+                return ZXDH_ERR;<br />             }<br />             row_index = (index << 7);<br />             cpu_ind_cmd.cpu_req_mode = ZXDH_ERAM128_OPR_128b;<br />             break;<br />         case ZXDH_ERAM128_OPR_64b:<br />             if ((base_addr + (index >> 1)) > ZXDH_SE_SMMU0_ERAM_ADDR_NUM_TOTAL - 1) {<br />-                PMD_DRV_LOG(ERR, "%s : index out of range !", __func__);<br />-                return -1;<br />+                PMD_DRV_LOG(ERR, "index out of range!");<br />+                rte_spinlock_unlock(&p_ind_spinlock->spinlock);<br />+                return ZXDH_ERR;<br />             }<br />-<br />             row_index = (index << 6);<br />             cpu_ind_cmd.cpu_req_mode = 2;<br />             break;<br />         case ZXDH_ERAM128_OPR_32b:<br />             if ((base_addr + (index >> 2)) > ZXDH_SE_SMMU0_ERAM_ADDR_NUM_TOTAL - 1) {<br />-                PMD_DRV_LOG(ERR, "%s : index out of range !", __func__);<br />-                return -1;<br />+                PMD_DRV_LOG(ERR, "index out of range!");<br />+                rte_spinlock_unlock(&p_ind_spinlock->spinlock);<br />+                return ZXDH_ERR;<br />             }<br />             row_index = (index << 5);<br />             cpu_ind_cmd.cpu_req_mode = 1;<br />             break;<br />         case ZXDH_ERAM128_OPR_1b:<br />-            PMD_DRV_LOG(ERR, "rd_clr_mode[%d] or rd_mode[%d] error! ",<br />+            PMD_DRV_LOG(ERR, "rd_clr_mode[%d] or rd_mode[%d] error!",<br />                 rd_clr_mode, rd_mode);<br />-            return -1;<br />+            rte_spinlock_unlock(&p_ind_spinlock->spinlock);<br />+            return ZXDH_ERR;<br />+        default:<br />+            break;<br />         }<br />         cpu_ind_cmd.cpu_ind_addr = ((base_addr << 7) & ZXDH_ERAM128_BADDR_MASK) + row_index;<br />     }<br />  <br />     rc = zxdh_np_reg_write(dev_id,<br />-                        ZXDH_SMMU0_SMMU0_CPU_IND_CMDR,<br />-                        0,<br />-                        0,<br />-                        &cpu_ind_cmd);<br />+            ZXDH_SMMU0_SMMU0_CPU_IND_CMDR,<br />+            0,<br />+            0,<br />+            &cpu_ind_cmd);<br />+    if (rc != ZXDH_OK) {<br />+        PMD_DRV_LOG(ERR, "zxdh_np_reg_write failed, rc=0x%x.", rc);<br />+        rte_spinlock_unlock(&p_ind_spinlock->spinlock);<br />+        return ZXDH_ERR;<br />+    }<br />  <br />     rc = zxdh_np_se_done_status_check(dev_id, ZXDH_SMMU0_SMMU0_CPU_IND_RD_DONER, 0);<br />+    if (rc != ZXDH_OK) {<br />+        PMD_DRV_LOG(ERR, "se done status check failed, rc=0x%x.", rc);<br />+        rte_spinlock_unlock(&p_ind_spinlock->spinlock);<br />+        return ZXDH_ERR;<br />+    }<br />  <br />     p_temp_data = temp_data;<br />     for (i = 0; i < 4; i++) {<br />         rc = zxdh_np_reg_read(dev_id,<br />-                            ZXDH_SMMU0_SMMU0_CPU_IND_RDAT0R + i,<br />-                            0,<br />-                            0,<br />-                            p_temp_data + 3 - i);<br />+            ZXDH_SMMU0_SMMU0_CPU_IND_RDAT0R + i,<br />+            0,<br />+            0,<br />+            p_temp_data + 3 - i);<br />+        if (rc != ZXDH_OK) {<br />+            PMD_DRV_LOG(ERR, "zxdh_np_reg_write failed, rc=0x%x.", rc);<br />+            rte_spinlock_unlock(&p_ind_spinlock->spinlock);<br />+            return ZXDH_ERR;<br />+        }<br />     }<br />  <br />     if (rd_clr_mode == ZXDH_RD_MODE_HOLD) {<br />@@ -10532,6 +10597,8 @@ zxdh_np_se_smmu0_ind_read(uint32_t dev_id,<br />             ZXDH_COMM_UINT32_GET_BITS(p_data[0],<br />                 *(p_temp_data + (3 - col_index / 32)), (col_index % 32), 1);<br />             break;<br />+        default:<br />+            break;<br />         }<br />     } else {<br />         switch (rd_mode) {<br />@@ -10544,9 +10611,13 @@ zxdh_np_se_smmu0_ind_read(uint32_t dev_id,<br />         case ZXDH_ERAM128_OPR_32b:<br />             memcpy(p_data, p_temp_data, (64 / 8));<br />             break;<br />+        default:<br />+            break;<br />         }<br />     }<br />  <br />+    rte_spinlock_unlock(&p_ind_spinlock->spinlock);<br />+<br />     return rc;<br /> }<br />  <br />@@ -10599,14 +10670,14 @@ zxdh_np_agent_channel_plcr_sync_send(uint32_t dev_id, ZXDH_AGENT_CHANNEL_PLCR_MS<br />         uint32_t *p_data, uint32_t rep_len)<br /> {<br />     uint32_t ret = 0;<br />-    ZXDH_AGENT_CHANNEL_MSG_T agent_msg = {0};<br />-<br />-    agent_msg.msg = (void *)p_msg;<br />-    agent_msg.msg_len = sizeof(ZXDH_AGENT_CHANNEL_PLCR_MSG_T);<br />+    ZXDH_AGENT_CHANNEL_MSG_T agent_msg = {<br />+        .msg = (void *)&p_msg,<br />+        .msg_len = sizeof(ZXDH_AGENT_CHANNEL_PLCR_MSG_T),<br />+    };<br />  <br />     ret = zxdh_np_agent_channel_sync_send(dev_id, &agent_msg, p_data, rep_len);<br />     if (ret != 0)    {<br />-        PMD_DRV_LOG(ERR, "%s: agent_channel_sync_send failed.", __func__);<br />+        PMD_DRV_LOG(ERR, "agent_channel_sync_send failed.");<br />         return 1;<br />     }<br />  <br />@@ -10620,19 +10691,19 @@ zxdh_np_agent_channel_plcr_profileid_request(uint32_t dev_id, uint32_t vport,<br />     uint32_t ret = 0;<br />     uint32_t resp_buffer[2] = {0};<br />  <br />-    ZXDH_AGENT_CHANNEL_PLCR_MSG_T msgcfg = {0};<br />-<br />-    msgcfg.dev_id = 0;<br />-    msgcfg.type = ZXDH_PLCR_MSG;<br />-    msgcfg.oper = ZXDH_PROFILEID_REQUEST;<br />-    msgcfg.vport = vport;<br />-    msgcfg.car_type = car_type;<br />-    msgcfg.profile_id = 0xFFFF;<br />+    ZXDH_AGENT_CHANNEL_PLCR_MSG_T msgcfg = {<br />+        .dev_id = 0,<br />+        .type = ZXDH_PLCR_MSG,<br />+        .oper = ZXDH_PROFILEID_REQUEST,<br />+        .vport = vport,<br />+        .car_type = car_type,<br />+        .profile_id = 0xFFFF,<br />+    };<br />  <br />     ret = zxdh_np_agent_channel_plcr_sync_send(dev_id, &msgcfg,<br />         resp_buffer, sizeof(resp_buffer));<br />     if (ret != 0)    {<br />-        PMD_DRV_LOG(ERR, "%s: agent_channel_plcr_sync_send failed.", __func__);<br />+        PMD_DRV_LOG(ERR, "agent_channel_plcr_sync_send failed.");<br />         return 1;<br />     }<br />  <br />@@ -10675,7 +10746,7 @@ zxdh_np_agent_channel_plcr_car_rate(uint32_t dev_id,<br />  <br />         ret = zxdh_np_agent_channel_sync_send(dev_id, &agent_msg, resp_buffer, resp_len);<br />         if (ret != 0)    {<br />-            PMD_DRV_LOG(ERR, "%s: stat_car_a_type failed.", __func__);<br />+            PMD_DRV_LOG(ERR, "stat_car_a_type failed.");<br />             return 1;<br />         }<br />  <br />@@ -10709,7 +10780,7 @@ zxdh_np_agent_channel_plcr_car_rate(uint32_t dev_id,<br />  <br />         ret = zxdh_np_agent_channel_sync_send(dev_id, &agent_msg, resp_buffer, resp_len);<br />         if (ret != 0)    {<br />-            PMD_DRV_LOG(ERR, "%s: stat_car_b_type failed.", __func__);<br />+            PMD_DRV_LOG(ERR, "stat_car_b_type failed.");<br />             return 1;<br />         }<br />  <br />@@ -10727,18 +10798,18 @@ zxdh_np_agent_channel_plcr_profileid_release(uint32_t dev_id, uint32_t vport,<br />     uint32_t ret = 0;<br />     uint32_t resp_buffer[2] = {0};<br />  <br />-    ZXDH_AGENT_CHANNEL_PLCR_MSG_T msgcfg = {0};<br />-<br />-    msgcfg.dev_id = 0;<br />-    msgcfg.type = ZXDH_PLCR_MSG;<br />-    msgcfg.oper = ZXDH_PROFILEID_RELEASE;<br />-    msgcfg.vport = vport;<br />-    msgcfg.profile_id = profileid;<br />+    ZXDH_AGENT_CHANNEL_PLCR_MSG_T msgcfg = {<br />+        .dev_id = 0,<br />+        .type = ZXDH_PLCR_MSG,<br />+        .oper = ZXDH_PROFILEID_RELEASE,<br />+        .vport = vport,<br />+        .profile_id = profileid,<br />+    };<br />  <br />     ret = zxdh_np_agent_channel_plcr_sync_send(dev_id, &msgcfg,<br />         resp_buffer, sizeof(resp_buffer));<br />     if (ret != 0)    {<br />-        PMD_DRV_LOG(ERR, "%s: agent_channel_plcr_sync_send failed.", __func__);<br />+        PMD_DRV_LOG(ERR, "agent_channel_plcr_sync_send failed.");<br />         return 1;<br />     }<br />  <br />@@ -10756,11 +10827,12 @@ zxdh_np_stat_cara_queue_cfg_set(uint32_t dev_id,<br /> {<br />     uint32_t rc = 0;<br />  <br />-    ZXDH_STAT_CAR0_CARA_QUEUE_RAM0_159_0_T queue_cfg = {0};<br />+    ZXDH_STAT_CAR0_CARA_QUEUE_RAM0_159_0_T queue_cfg = {<br />+        .cara_drop = drop_flag,<br />+        .cara_plcr_en = plcr_en,<br />+        .cara_profile_id = profile_id,<br />+    };<br />  <br />-    queue_cfg.cara_drop = drop_flag;<br />-    queue_cfg.cara_plcr_en = plcr_en;<br />-    queue_cfg.cara_profile_id = profile_id;<br />     rc = zxdh_np_reg_write(dev_id,<br />                 ZXDH_STAT_CAR0_CARA_QUEUE_RAM0,<br />                 0,<br />@@ -10780,11 +10852,11 @@ zxdh_np_stat_carb_queue_cfg_set(uint32_t dev_id,<br /> {<br />     uint32_t rc = 0;<br />  <br />-    ZXDH_STAT_CAR0_CARB_QUEUE_RAM0_159_0_T queue_cfg = {0};<br />-<br />-    queue_cfg.carb_drop = drop_flag;<br />-    queue_cfg.carb_plcr_en = plcr_en;<br />-    queue_cfg.carb_profile_id = profile_id;<br />+    ZXDH_STAT_CAR0_CARB_QUEUE_RAM0_159_0_T queue_cfg = {<br />+        .carb_drop = drop_flag,<br />+        .carb_plcr_en = plcr_en,<br />+        .carb_profile_id = profile_id,<br />+    };<br />  <br />     rc = zxdh_np_reg_write(dev_id,<br />                 ZXDH_STAT_CAR0_CARB_QUEUE_RAM0,<br />@@ -10805,10 +10877,11 @@ zxdh_np_stat_carc_queue_cfg_set(uint32_t dev_id,<br /> {<br />     uint32_t rc = 0;<br />  <br />-    ZXDH_STAT_CAR0_CARC_QUEUE_RAM0_159_0_T queue_cfg = {0};<br />-    queue_cfg.carc_drop = drop_flag;<br />-    queue_cfg.carc_plcr_en = plcr_en;<br />-    queue_cfg.carc_profile_id = profile_id;<br />+    ZXDH_STAT_CAR0_CARC_QUEUE_RAM0_159_0_T queue_cfg = {<br />+        .carc_drop = drop_flag,<br />+        .carc_plcr_en = plcr_en,<br />+        .carc_profile_id = profile_id,<br />+    };<br />  <br />     rc = zxdh_np_reg_write(dev_id,<br />                         ZXDH_STAT_CAR0_CARC_QUEUE_RAM0,<br />@@ -10821,7 +10894,8 @@ zxdh_np_stat_carc_queue_cfg_set(uint32_t dev_id,<br /> }<br />  <br /> uint32_t<br />-zxdh_np_car_profile_id_add(uint32_t vport_id,<br />+zxdh_np_car_profile_id_add(uint32_t dev_id,<br />+        uint32_t vport_id,<br />         uint32_t flags,<br />         uint64_t *p_profile_id)<br /> {<br />@@ -10833,10 +10907,10 @@ zxdh_np_car_profile_id_add(uint32_t vport_id,<br />  <br />     profile_id = (uint32_t *)rte_zmalloc(NULL, ZXDH_G_PROFILE_ID_LEN, 0);<br />     if (profile_id == NULL) {<br />-        PMD_DRV_LOG(ERR, "%s: profile_id point null!", __func__);<br />+        PMD_DRV_LOG(ERR, "profile_id point null!");<br />         return ZXDH_PAR_CHK_POINT_NULL;<br />     }<br />-    ret = zxdh_np_agent_channel_plcr_profileid_request(0, vport_id, flags, profile_id);<br />+    ret = zxdh_np_agent_channel_plcr_profileid_request(dev_id, vport_id, flags, profile_id);<br />  <br />     profile_id_h = *(profile_id + 1);<br />     profile_id_l = *profile_id;<br />@@ -10844,7 +10918,7 @@ zxdh_np_car_profile_id_add(uint32_t vport_id,<br />  <br />     temp_profile_id = (((uint64_t)profile_id_l) << 32) | ((uint64_t)profile_id_h);<br />     if (0 != (uint32_t)(temp_profile_id >> 56)) {<br />-        PMD_DRV_LOG(ERR, "%s: profile_id is overflow!", __func__);<br />+        PMD_DRV_LOG(ERR, "profile_id is overflow!");<br />         return 1;<br />     }<br />  <br />@@ -10854,19 +10928,19 @@ zxdh_np_car_profile_id_add(uint32_t vport_id,<br /> }<br />  <br /> uint32_t<br />-zxdh_np_car_profile_cfg_set(uint32_t vport_id __rte_unused,<br />+zxdh_np_car_profile_cfg_set(uint32_t dev_id,<br />+        uint32_t vport_id __rte_unused,<br />         uint32_t car_type,<br />         uint32_t pkt_sign,<br />         uint32_t profile_id,<br />         void *p_car_profile_cfg)<br /> {<br />     uint32_t ret = 0;<br />-    uint32_t dev_id = 0;<br />  <br />     ret = zxdh_np_agent_channel_plcr_car_rate(dev_id, car_type,<br />         pkt_sign, profile_id, p_car_profile_cfg);<br />     if (ret != 0) {<br />-        PMD_DRV_LOG(ERR, "%s: plcr_car_rate set failed!", __func__);<br />+        PMD_DRV_LOG(ERR, "plcr_car_rate set failed!");<br />         return 1;<br />     }<br />  <br />@@ -10874,18 +10948,15 @@ zxdh_np_car_profile_cfg_set(uint32_t vport_id __rte_unused,<br /> }<br />  <br /> uint32_t<br />-zxdh_np_car_profile_id_delete(uint32_t vport_id,<br />+zxdh_np_car_profile_id_delete(uint32_t dev_id, uint32_t vport_id,<br />     uint32_t flags, uint64_t profile_id)<br /> {<br />     uint32_t ret = 0;<br />-    uint32_t profileid = 0;<br />-    uint32_t dev_id = 0;<br />-<br />-    profileid = profile_id & 0xFFFF;<br />+    uint32_t profileid = profile_id & 0xFFFF;<br />  <br />     ret = zxdh_np_agent_channel_plcr_profileid_release(dev_id, vport_id, flags, profileid);<br />     if (ret != 0) {<br />-        PMD_DRV_LOG(ERR, "%s: plcr profiled id release failed!", __func__);<br />+        PMD_DRV_LOG(ERR, "plcr profiled id release failed!");<br />         return 1;<br />     }<br />  <br />@@ -10904,32 +10975,32 @@ zxdh_np_stat_car_queue_cfg_set(uint32_t dev_id,<br />  <br />     if (car_type == ZXDH_STAT_CAR_A_TYPE) {<br />         if (flow_id > ZXDH_CAR_A_FLOW_ID_MAX) {<br />-            PMD_DRV_LOG(ERR, "%s: stat car a type flow_id invalid!", __func__);<br />+            PMD_DRV_LOG(ERR, "stat car a type flow_id invalid!");<br />             return ZXDH_PAR_CHK_INVALID_INDEX;<br />         }<br />  <br />         if (profile_id > ZXDH_CAR_A_PROFILE_ID_MAX) {<br />-            PMD_DRV_LOG(ERR, "%s: stat car a type profile_id invalid!", __func__);<br />+            PMD_DRV_LOG(ERR, "stat car a type profile_id invalid!");<br />             return ZXDH_PAR_CHK_INVALID_INDEX;<br />         }<br />     } else if (car_type == ZXDH_STAT_CAR_B_TYPE) {<br />         if (flow_id > ZXDH_CAR_B_FLOW_ID_MAX) {<br />-            PMD_DRV_LOG(ERR, "%s: stat car b type flow_id invalid!", __func__);<br />+            PMD_DRV_LOG(ERR, "stat car b type flow_id invalid!");<br />             return ZXDH_PAR_CHK_INVALID_INDEX;<br />         }<br />  <br />         if (profile_id > ZXDH_CAR_B_PROFILE_ID_MAX) {<br />-            PMD_DRV_LOG(ERR, "%s: stat car b type profile_id invalid!", __func__);<br />+            PMD_DRV_LOG(ERR, "stat car b type profile_id invalid!");<br />             return ZXDH_PAR_CHK_INVALID_INDEX;<br />         }<br />     } else {<br />         if (flow_id > ZXDH_CAR_C_FLOW_ID_MAX) {<br />-            PMD_DRV_LOG(ERR, "%s: stat car c type flow_id invalid!", __func__);<br />+            PMD_DRV_LOG(ERR, "stat car c type flow_id invalid!");<br />             return ZXDH_PAR_CHK_INVALID_INDEX;<br />         }<br />  <br />         if (profile_id > ZXDH_CAR_C_PROFILE_ID_MAX) {<br />-            PMD_DRV_LOG(ERR, "%s: stat car c type profile_id invalid!", __func__);<br />+            PMD_DRV_LOG(ERR, "stat car c type profile_id invalid!");<br />             return ZXDH_PAR_CHK_INVALID_INDEX;<br />         }<br />     }<br />diff --git a/drivers/net/zxdh/zxdh_np.h b/drivers/net/zxdh/zxdh_np.h<br />index 3cbfc7946b..4c3fcbc0c8 100644<br />--- a/drivers/net/zxdh/zxdh_np.h<br />+++ b/drivers/net/zxdh/zxdh_np.h<br />@@ -1934,15 +1934,17 @@ uint32_t zxdh_np_stat_ppu_cnt_get_ex(uint32_t dev_id,<br />             uint32_t clr_mode,<br />             uint32_t *p_data);<br /> uint32_t<br />-zxdh_np_car_profile_id_add(uint32_t vport_id,<br />+zxdh_np_car_profile_id_add(uint32_t dev_id,<br />+            uint32_t vport_id,<br />             uint32_t flags,<br />             uint64_t *p_profile_id);<br />-uint32_t zxdh_np_car_profile_cfg_set(uint32_t vport_id,<br />+uint32_t zxdh_np_car_profile_cfg_set(uint32_t dev_id,<br />+            uint32_t vport_id,<br />             uint32_t car_type,<br />             uint32_t pkt_sign,<br />             uint32_t profile_id,<br />             void *p_car_profile_cfg);<br />-uint32_t zxdh_np_car_profile_id_delete(uint32_t vport_id,<br />+uint32_t zxdh_np_car_profile_id_delete(uint32_t dev_id, uint32_t vport_id,<br />             uint32_t flags, uint64_t profile_id);<br /> uint32_t zxdh_np_stat_car_queue_cfg_set(uint32_t dev_id,<br />             uint32_t car_type,<br />--  <br />2.27.0<br />