From: Chengwen Feng <fengcheng...@huawei.com>

The DCB-related fields span in multiple structures, this patch moves
them into struct hns3_dcb_info.

Signed-off-by: Chengwen Feng <fengcheng...@huawei.com>
Signed-off-by: Dengdui Huang <huangdeng...@huawei.com>
---
 drivers/net/hns3/hns3_dcb.c       | 13 +++++------
 drivers/net/hns3/hns3_ethdev.c    | 38 +++++++++++++++----------------
 drivers/net/hns3/hns3_ethdev.h    |  8 +++----
 drivers/net/hns3/hns3_ethdev_vf.c |  4 ++--
 drivers/net/hns3/hns3_rss.c       |  8 +++----
 5 files changed, 34 insertions(+), 37 deletions(-)

diff --git a/drivers/net/hns3/hns3_dcb.c b/drivers/net/hns3/hns3_dcb.c
index 88c6242d66..9a1f4120d0 100644
--- a/drivers/net/hns3/hns3_dcb.c
+++ b/drivers/net/hns3/hns3_dcb.c
@@ -678,7 +678,7 @@ hns3_tc_queue_mapping_cfg(struct hns3_hw *hw, uint16_t 
nb_tx_q)
        hw->tx_qnum_per_tc = tx_qnum_per_tc;
        for (i = 0; i < HNS3_MAX_TC_NUM; i++) {
                tc_queue = &hw->tc_queue[i];
-               if (hw->hw_tc_map & BIT(i) && i < hw->dcb_info.num_tc) {
+               if (hw->dcb_info.hw_tc_map & BIT(i) && i < hw->dcb_info.num_tc) 
{
                        tc_queue->enable = true;
                        tc_queue->tqp_offset = i * hw->tx_qnum_per_tc;
                        tc_queue->tqp_count = hw->tx_qnum_per_tc;
@@ -762,7 +762,7 @@ hns3_dcb_info_init(struct hns3_hw *hw)
                if (i != 0)
                        continue;
 
-               hw->dcb_info.pg_info[i].tc_bit_map = hw->hw_tc_map;
+               hw->dcb_info.pg_info[i].tc_bit_map = hw->dcb_info.hw_tc_map;
                for (k = 0; k < hw->dcb_info.num_tc; k++)
                        hw->dcb_info.pg_info[i].tc_dwrr[k] = BW_MAX_PERCENT;
        }
@@ -1395,15 +1395,14 @@ static int
 hns3_dcb_info_cfg(struct hns3_adapter *hns)
 {
        struct rte_eth_dcb_rx_conf *dcb_rx_conf;
-       struct hns3_pf *pf = &hns->pf;
        struct hns3_hw *hw = &hns->hw;
        uint8_t tc_bw, bw_rest;
        uint8_t i, j;
        int ret;
 
        dcb_rx_conf = &hw->data->dev_conf.rx_adv_conf.dcb_rx_conf;
-       pf->local_max_tc = (uint8_t)dcb_rx_conf->nb_tcs;
-       pf->pfc_max = (uint8_t)dcb_rx_conf->nb_tcs;
+       hw->dcb_info.local_max_tc = (uint8_t)dcb_rx_conf->nb_tcs;
+       hw->dcb_info.pfc_max = (uint8_t)dcb_rx_conf->nb_tcs;
 
        /* Config pg0 */
        memset(hw->dcb_info.pg_info, 0,
@@ -1412,7 +1411,7 @@ hns3_dcb_info_cfg(struct hns3_adapter *hns)
        hw->dcb_info.pg_info[0].pg_id = 0;
        hw->dcb_info.pg_info[0].pg_sch_mode = HNS3_SCH_MODE_DWRR;
        hw->dcb_info.pg_info[0].bw_limit = hw->max_tm_rate;
-       hw->dcb_info.pg_info[0].tc_bit_map = hw->hw_tc_map;
+       hw->dcb_info.pg_info[0].tc_bit_map = hw->dcb_info.hw_tc_map;
 
        /* Each tc has same bw for valid tc by default */
        tc_bw = BW_MAX_PERCENT / hw->dcb_info.num_tc;
@@ -1482,7 +1481,7 @@ hns3_dcb_info_update(struct hns3_adapter *hns, uint8_t 
num_tc)
                bit_map = 1;
                hw->dcb_info.num_tc = 1;
        }
-       hw->hw_tc_map = bit_map;
+       hw->dcb_info.hw_tc_map = bit_map;
 
        return hns3_dcb_info_cfg(hns);
 }
diff --git a/drivers/net/hns3/hns3_ethdev.c b/drivers/net/hns3/hns3_ethdev.c
index 6b8fd3383a..5af11d9228 100644
--- a/drivers/net/hns3/hns3_ethdev.c
+++ b/drivers/net/hns3/hns3_ethdev.c
@@ -1876,7 +1876,6 @@ hns3_check_mq_mode(struct rte_eth_dev *dev)
        enum rte_eth_rx_mq_mode rx_mq_mode = dev->data->dev_conf.rxmode.mq_mode;
        enum rte_eth_tx_mq_mode tx_mq_mode = dev->data->dev_conf.txmode.mq_mode;
        struct hns3_hw *hw = HNS3_DEV_PRIVATE_TO_HW(dev->data->dev_private);
-       struct hns3_pf *pf = HNS3_DEV_PRIVATE_TO_PF(dev->data->dev_private);
        struct rte_eth_dcb_rx_conf *dcb_rx_conf;
        struct rte_eth_dcb_tx_conf *dcb_tx_conf;
        uint8_t num_tc;
@@ -1894,9 +1893,9 @@ hns3_check_mq_mode(struct rte_eth_dev *dev)
        dcb_rx_conf = &dev->data->dev_conf.rx_adv_conf.dcb_rx_conf;
        dcb_tx_conf = &dev->data->dev_conf.tx_adv_conf.dcb_tx_conf;
        if ((uint32_t)rx_mq_mode & RTE_ETH_MQ_RX_DCB_FLAG) {
-               if (dcb_rx_conf->nb_tcs > pf->tc_max) {
+               if (dcb_rx_conf->nb_tcs > hw->dcb_info.tc_max) {
                        hns3_err(hw, "nb_tcs(%u) > max_tc(%u) driver 
supported.",
-                                dcb_rx_conf->nb_tcs, pf->tc_max);
+                                dcb_rx_conf->nb_tcs, hw->dcb_info.tc_max);
                        return -EINVAL;
                }
 
@@ -2837,25 +2836,25 @@ hns3_get_board_configuration(struct hns3_hw *hw)
                return ret;
        }
 
-       pf->tc_max = cfg.tc_num;
-       if (pf->tc_max > HNS3_MAX_TC_NUM || pf->tc_max < 1) {
+       hw->dcb_info.tc_max = cfg.tc_num;
+       if (hw->dcb_info.tc_max > HNS3_MAX_TC_NUM || hw->dcb_info.tc_max < 1) {
                PMD_INIT_LOG(WARNING,
                             "Get TC num(%u) from flash, set TC num to 1",
-                            pf->tc_max);
-               pf->tc_max = 1;
+                            hw->dcb_info.tc_max);
+               hw->dcb_info.tc_max = 1;
        }
 
        /* Dev does not support DCB */
        if (!hns3_dev_get_support(hw, DCB)) {
-               pf->tc_max = 1;
-               pf->pfc_max = 0;
+               hw->dcb_info.tc_max = 1;
+               hw->dcb_info.pfc_max = 0;
        } else
-               pf->pfc_max = pf->tc_max;
+               hw->dcb_info.pfc_max = hw->dcb_info.tc_max;
 
        hw->dcb_info.num_tc = 1;
        hw->alloc_rss_size = RTE_MIN(hw->rss_size_max,
                                     hw->tqps_num / hw->dcb_info.num_tc);
-       hns3_set_bit(hw->hw_tc_map, 0, 1);
+       hns3_set_bit(hw->dcb_info.hw_tc_map, 0, 1);
        pf->tx_sch_mode = HNS3_FLAG_TC_BASE_SCH_MODE;
 
        pf->wanted_umv_size = cfg.umv_space;
@@ -3025,7 +3024,7 @@ hns3_tx_buffer_calc(struct hns3_hw *hw, struct 
hns3_pkt_buf_alloc *buf_alloc)
        for (i = 0; i < HNS3_MAX_TC_NUM; i++) {
                priv = &buf_alloc->priv_buf[i];
 
-               if (hw->hw_tc_map & BIT(i)) {
+               if (hw->dcb_info.hw_tc_map & BIT(i)) {
                        if (total_size < pf->tx_buf_size)
                                return -ENOMEM;
 
@@ -3076,7 +3075,7 @@ hns3_get_tc_num(struct hns3_hw *hw)
        uint8_t i;
 
        for (i = 0; i < HNS3_MAX_TC_NUM; i++)
-               if (hw->hw_tc_map & BIT(i))
+               if (hw->dcb_info.hw_tc_map & BIT(i))
                        cnt++;
        return cnt;
 }
@@ -3136,7 +3135,7 @@ hns3_get_no_pfc_priv_num(struct hns3_hw *hw,
 
        for (i = 0; i < HNS3_MAX_TC_NUM; i++) {
                priv = &buf_alloc->priv_buf[i];
-               if (hw->hw_tc_map & BIT(i) &&
+               if (hw->dcb_info.hw_tc_map & BIT(i) &&
                    !(hw->dcb_info.hw_pfc_map & BIT(i)) && priv->enable)
                        cnt++;
        }
@@ -3235,7 +3234,7 @@ hns3_rx_buf_calc_all(struct hns3_hw *hw, bool max,
                priv->wl.high = 0;
                priv->buf_size = 0;
 
-               if (!(hw->hw_tc_map & BIT(i)))
+               if (!(hw->dcb_info.hw_tc_map & BIT(i)))
                        continue;
 
                priv->enable = 1;
@@ -3274,7 +3273,7 @@ hns3_drop_nopfc_buf_till_fit(struct hns3_hw *hw,
        for (i = HNS3_MAX_TC_NUM - 1; i >= 0; i--) {
                priv = &buf_alloc->priv_buf[i];
                mask = BIT((uint8_t)i);
-               if (hw->hw_tc_map & mask &&
+               if (hw->dcb_info.hw_tc_map & mask &&
                    !(hw->dcb_info.hw_pfc_map & mask)) {
                        /* Clear the no pfc TC private buffer */
                        priv->wl.low = 0;
@@ -3311,7 +3310,7 @@ hns3_drop_pfc_buf_till_fit(struct hns3_hw *hw,
        for (i = HNS3_MAX_TC_NUM - 1; i >= 0; i--) {
                priv = &buf_alloc->priv_buf[i];
                mask = BIT((uint8_t)i);
-               if (hw->hw_tc_map & mask && hw->dcb_info.hw_pfc_map & mask) {
+               if (hw->dcb_info.hw_tc_map & mask && hw->dcb_info.hw_pfc_map & 
mask) {
                        /* Reduce the number of pfc TC with private buffer */
                        priv->wl.low = 0;
                        priv->enable = 0;
@@ -3369,7 +3368,7 @@ hns3_only_alloc_priv_buff(struct hns3_hw *hw,
                priv->wl.high = 0;
                priv->buf_size = 0;
 
-               if (!(hw->hw_tc_map & BIT(i)))
+               if (!(hw->dcb_info.hw_tc_map & BIT(i)))
                        continue;
 
                priv->enable = 1;
@@ -5494,13 +5493,12 @@ static int
 hns3_get_dcb_info(struct rte_eth_dev *dev, struct rte_eth_dcb_info *dcb_info)
 {
        struct hns3_hw *hw = HNS3_DEV_PRIVATE_TO_HW(dev->data->dev_private);
-       struct hns3_pf *pf = HNS3_DEV_PRIVATE_TO_PF(dev->data->dev_private);
        enum rte_eth_rx_mq_mode mq_mode = dev->data->dev_conf.rxmode.mq_mode;
        int i;
 
        rte_spinlock_lock(&hw->lock);
        if ((uint32_t)mq_mode & RTE_ETH_MQ_RX_DCB_FLAG)
-               dcb_info->nb_tcs = pf->local_max_tc;
+               dcb_info->nb_tcs = hw->dcb_info.local_max_tc;
        else
                dcb_info->nb_tcs = 1;
 
diff --git a/drivers/net/hns3/hns3_ethdev.h b/drivers/net/hns3/hns3_ethdev.h
index e4160f6eae..d7a55c134f 100644
--- a/drivers/net/hns3/hns3_ethdev.h
+++ b/drivers/net/hns3/hns3_ethdev.h
@@ -130,7 +130,11 @@ struct hns3_tc_info {
 };
 
 struct hns3_dcb_info {
+       uint8_t tc_max;     /* max number of tc driver supported */
        uint8_t num_tc;     /* Total number of enabled TCs */
+       uint8_t hw_tc_map;
+       uint8_t local_max_tc; /* max number of local tc */
+       uint8_t pfc_max;
        uint8_t num_pg;     /* It must be 1 if vNET-Base schd */
        uint8_t pg_dwrr[HNS3_PG_NUM];
        uint8_t prio_tc[HNS3_MAX_USER_PRIO];
@@ -534,7 +538,6 @@ struct hns3_hw {
        uint16_t rss_ind_tbl_size;
        uint16_t rss_key_size;
 
-       uint8_t hw_tc_map;
        enum hns3_fc_mode requested_fc_mode; /* FC mode requested by user */
        struct hns3_dcb_info dcb_info;
        enum hns3_fc_status current_fc_status; /* current flow control status */
@@ -831,9 +834,6 @@ struct hns3_pf {
        uint16_t mps; /* Max packet size */
 
        uint8_t tx_sch_mode;
-       uint8_t tc_max; /* max number of tc driver supported */
-       uint8_t local_max_tc; /* max number of local tc */
-       uint8_t pfc_max;
        uint16_t pause_time;
        bool support_fc_autoneg;       /* support FC autonegotiate */
        bool support_multi_tc_pause;
diff --git a/drivers/net/hns3/hns3_ethdev_vf.c 
b/drivers/net/hns3/hns3_ethdev_vf.c
index 5f4ae1d979..1cb8a9ccc1 100644
--- a/drivers/net/hns3/hns3_ethdev_vf.c
+++ b/drivers/net/hns3/hns3_ethdev_vf.c
@@ -830,7 +830,7 @@ hns3vf_get_num_tc(struct hns3_hw *hw)
        uint32_t i;
 
        for (i = 0; i < HNS3_MAX_TC_NUM; i++) {
-               if (hw->hw_tc_map & BIT(i))
+               if (hw->dcb_info.hw_tc_map & BIT(i))
                        num_tc++;
        }
        return num_tc;
@@ -853,7 +853,7 @@ hns3vf_get_basic_info(struct hns3_hw *hw)
        }
 
        basic_info = (struct hns3_basic_info *)resp_msg;
-       hw->hw_tc_map = basic_info->hw_tc_map;
+       hw->dcb_info.hw_tc_map = basic_info->hw_tc_map;
        hw->dcb_info.num_tc = hns3vf_get_num_tc(hw);
        hw->pf_vf_if_version = basic_info->pf_vf_if_version;
        hns3vf_update_caps(hw, basic_info->caps);
diff --git a/drivers/net/hns3/hns3_rss.c b/drivers/net/hns3/hns3_rss.c
index 3eae4caf52..508b3e26d0 100644
--- a/drivers/net/hns3/hns3_rss.c
+++ b/drivers/net/hns3/hns3_rss.c
@@ -940,13 +940,13 @@ hns3_set_rss_tc_mode_entry(struct hns3_hw *hw, uint8_t 
*tc_valid,
                         * has to enable the unused TC by using TC0 queue
                         * mapping configuration.
                         */
-                       tc_valid[i] = (hw->hw_tc_map & BIT(i)) ?
-                                       !!(hw->hw_tc_map & BIT(i)) : 1;
+                       tc_valid[i] = (hw->dcb_info.hw_tc_map & BIT(i)) ?
+                                       !!(hw->dcb_info.hw_tc_map & BIT(i)) : 1;
                        tc_size[i] = roundup_size;
-                       tc_offset[i] = (hw->hw_tc_map & BIT(i)) ?
+                       tc_offset[i] = (hw->dcb_info.hw_tc_map & BIT(i)) ?
                                        rss_size * i : 0;
                } else {
-                       tc_valid[i] = !!(hw->hw_tc_map & BIT(i));
+                       tc_valid[i] = !!(hw->dcb_info.hw_tc_map & BIT(i));
                        tc_size[i] = tc_valid[i] ? roundup_size : 0;
                        tc_offset[i] = tc_valid[i] ? rss_size * i : 0;
                }
-- 
2.33.0

Reply via email to