ethdev: remove deprecated shared counter attribute
[dpdk.git] / drivers / net / i40e / i40e_ethdev.c
index 7a2a828..a2e35eb 100644 (file)
@@ -347,16 +347,6 @@ static int i40e_dev_sync_phy_type(struct i40e_hw *hw);
 static void i40e_configure_registers(struct i40e_hw *hw);
 static void i40e_hw_init(struct rte_eth_dev *dev);
 static int i40e_config_qinq(struct i40e_hw *hw, struct i40e_vsi *vsi);
-static enum i40e_status_code i40e_aq_del_mirror_rule(struct i40e_hw *hw,
-                                                    uint16_t seid,
-                                                    uint16_t rule_type,
-                                                    uint16_t *entries,
-                                                    uint16_t count,
-                                                    uint16_t rule_id);
-static int i40e_mirror_rule_set(struct rte_eth_dev *dev,
-                       struct rte_eth_mirror_conf *mirror_conf,
-                       uint8_t sw_id, uint8_t on);
-static int i40e_mirror_rule_reset(struct rte_eth_dev *dev, uint8_t sw_id);
 
 static int i40e_timesync_enable(struct rte_eth_dev *dev);
 static int i40e_timesync_disable(struct rte_eth_dev *dev);
@@ -507,8 +497,6 @@ static const struct eth_dev_ops i40e_eth_dev_ops = {
        .txq_info_get                 = i40e_txq_info_get,
        .rx_burst_mode_get            = i40e_rx_burst_mode_get,
        .tx_burst_mode_get            = i40e_tx_burst_mode_get,
-       .mirror_rule_set              = i40e_mirror_rule_set,
-       .mirror_rule_reset            = i40e_mirror_rule_reset,
        .timesync_enable              = i40e_timesync_enable,
        .timesync_disable             = i40e_timesync_disable,
        .timesync_read_rx_timestamp   = i40e_timesync_read_rx_timestamp,
@@ -1434,7 +1422,6 @@ eth_i40e_dev_init(struct rte_eth_dev *dev, void *init_params __rte_unused)
 
        dev->dev_ops = &i40e_eth_dev_ops;
        dev->rx_queue_count = i40e_dev_rx_queue_count;
-       dev->rx_descriptor_done = i40e_dev_rx_descriptor_done;
        dev->rx_descriptor_status = i40e_dev_rx_descriptor_status;
        dev->tx_descriptor_status = i40e_dev_tx_descriptor_status;
        dev->rx_pkt_burst = i40e_recv_pkts;
@@ -1726,9 +1713,6 @@ eth_i40e_dev_init(struct rte_eth_dev *dev, void *init_params __rte_unused)
         */
        i40e_aq_set_mac_config(hw, I40E_FRAME_SIZE_MAX, TRUE, false, 0, NULL);
 
-       /* initialize mirror rule list */
-       TAILQ_INIT(&pf->mirror_list);
-
        /* initialize RSS rule list */
        TAILQ_INIT(&pf->rss_config_list);
 
@@ -2600,7 +2584,6 @@ i40e_dev_close(struct rte_eth_dev *dev)
        struct i40e_hw *hw = I40E_DEV_PRIVATE_TO_HW(dev->data->dev_private);
        struct rte_pci_device *pci_dev = RTE_ETH_DEV_TO_PCI(dev);
        struct rte_intr_handle *intr_handle = &pci_dev->intr_handle;
-       struct i40e_mirror_rule *p_mirror;
        struct i40e_filter_control_settings settings;
        struct rte_flow *p_flow;
        uint32_t reg;
@@ -2620,25 +2603,6 @@ i40e_dev_close(struct rte_eth_dev *dev)
 
        ret = i40e_dev_stop(dev);
 
-       /* Remove all mirror rules */
-       while ((p_mirror = TAILQ_FIRST(&pf->mirror_list))) {
-               ret = i40e_aq_del_mirror_rule(hw,
-                                             pf->main_vsi->veb->seid,
-                                             p_mirror->rule_type,
-                                             p_mirror->entries,
-                                             p_mirror->num_entries,
-                                             p_mirror->id);
-               if (ret < 0)
-                       PMD_DRV_LOG(ERR, "failed to remove mirror rule: "
-                                   "status = %d, aq_err = %d.", ret,
-                                   hw->aq.asq_last_status);
-
-               /* remove mirror software resource anyway */
-               TAILQ_REMOVE(&pf->mirror_list, p_mirror, rules);
-               rte_free(p_mirror);
-               pf->nb_mirror_rule--;
-       }
-
        i40e_dev_free_queues(dev);
 
        /* Disable interrupt */
@@ -5438,7 +5402,7 @@ i40e_vsi_release(struct i40e_vsi *vsi)
 
        /* VSI has child to attach, release child first */
        if (vsi->veb) {
-               TAILQ_FOREACH_SAFE(vsi_list, &vsi->veb->head, list, temp) {
+               RTE_TAILQ_FOREACH_SAFE(vsi_list, &vsi->veb->head, list, temp) {
                        if (i40e_vsi_release(vsi_list->vsi) != I40E_SUCCESS)
                                return -1;
                }
@@ -5446,7 +5410,8 @@ i40e_vsi_release(struct i40e_vsi *vsi)
        }
 
        if (vsi->floating_veb) {
-               TAILQ_FOREACH_SAFE(vsi_list, &vsi->floating_veb->head, list, temp) {
+               RTE_TAILQ_FOREACH_SAFE(vsi_list, &vsi->floating_veb->head,
+                       list, temp) {
                        if (i40e_vsi_release(vsi_list->vsi) != I40E_SUCCESS)
                                return -1;
                }
@@ -5454,7 +5419,7 @@ i40e_vsi_release(struct i40e_vsi *vsi)
 
        /* Remove all macvlan filters of the VSI */
        i40e_vsi_remove_all_macvlan_filter(vsi);
-       TAILQ_FOREACH_SAFE(f, &vsi->mac_list, next, temp)
+       RTE_TAILQ_FOREACH_SAFE(f, &vsi->mac_list, next, temp)
                rte_free(f);
 
        if (vsi->type != I40E_VSI_MAIN &&
@@ -6057,7 +6022,7 @@ i40e_vsi_config_vlan_filter(struct i40e_vsi *vsi, bool on)
        i = 0;
 
        /* Remove all existing mac */
-       TAILQ_FOREACH_SAFE(f, &vsi->mac_list, next, temp) {
+       RTE_TAILQ_FOREACH_SAFE(f, &vsi->mac_list, next, temp) {
                mac_filter[i] = f->mac_info;
                ret = i40e_vsi_delete_mac(vsi, &f->mac_info.mac_addr);
                if (ret) {
@@ -10235,323 +10200,6 @@ i40e_config_qinq(struct i40e_hw *hw, struct i40e_vsi *vsi)
        return 0;
 }
 
-/**
- * i40e_aq_add_mirror_rule
- * @hw: pointer to the hardware structure
- * @seid: VEB seid to add mirror rule to
- * @dst_id: destination vsi seid
- * @entries: Buffer which contains the entities to be mirrored
- * @count: number of entities contained in the buffer
- * @rule_id:the rule_id of the rule to be added
- *
- * Add a mirror rule for a given veb.
- *
- **/
-static enum i40e_status_code
-i40e_aq_add_mirror_rule(struct i40e_hw *hw,
-                       uint16_t seid, uint16_t dst_id,
-                       uint16_t rule_type, uint16_t *entries,
-                       uint16_t count, uint16_t *rule_id)
-{
-       struct i40e_aq_desc desc;
-       struct i40e_aqc_add_delete_mirror_rule cmd;
-       struct i40e_aqc_add_delete_mirror_rule_completion *resp =
-               (struct i40e_aqc_add_delete_mirror_rule_completion *)
-               &desc.params.raw;
-       uint16_t buff_len;
-       enum i40e_status_code status;
-
-       i40e_fill_default_direct_cmd_desc(&desc,
-                                         i40e_aqc_opc_add_mirror_rule);
-       memset(&cmd, 0, sizeof(cmd));
-
-       buff_len = sizeof(uint16_t) * count;
-       desc.datalen = rte_cpu_to_le_16(buff_len);
-       if (buff_len > 0)
-               desc.flags |= rte_cpu_to_le_16(
-                       (uint16_t)(I40E_AQ_FLAG_BUF | I40E_AQ_FLAG_RD));
-       cmd.rule_type = rte_cpu_to_le_16(rule_type <<
-                               I40E_AQC_MIRROR_RULE_TYPE_SHIFT);
-       cmd.num_entries = rte_cpu_to_le_16(count);
-       cmd.seid = rte_cpu_to_le_16(seid);
-       cmd.destination = rte_cpu_to_le_16(dst_id);
-
-       rte_memcpy(&desc.params.raw, &cmd, sizeof(cmd));
-       status = i40e_asq_send_command(hw, &desc, entries, buff_len, NULL);
-       PMD_DRV_LOG(INFO,
-               "i40e_aq_add_mirror_rule, aq_status %d, rule_id = %u mirror_rules_used = %u, mirror_rules_free = %u,",
-               hw->aq.asq_last_status, resp->rule_id,
-               resp->mirror_rules_used, resp->mirror_rules_free);
-       *rule_id = rte_le_to_cpu_16(resp->rule_id);
-
-       return status;
-}
-
-/**
- * i40e_aq_del_mirror_rule
- * @hw: pointer to the hardware structure
- * @seid: VEB seid to add mirror rule to
- * @entries: Buffer which contains the entities to be mirrored
- * @count: number of entities contained in the buffer
- * @rule_id:the rule_id of the rule to be delete
- *
- * Delete a mirror rule for a given veb.
- *
- **/
-static enum i40e_status_code
-i40e_aq_del_mirror_rule(struct i40e_hw *hw,
-               uint16_t seid, uint16_t rule_type, uint16_t *entries,
-               uint16_t count, uint16_t rule_id)
-{
-       struct i40e_aq_desc desc;
-       struct i40e_aqc_add_delete_mirror_rule cmd;
-       uint16_t buff_len = 0;
-       enum i40e_status_code status;
-       void *buff = NULL;
-
-       i40e_fill_default_direct_cmd_desc(&desc,
-                                         i40e_aqc_opc_delete_mirror_rule);
-       memset(&cmd, 0, sizeof(cmd));
-       if (rule_type == I40E_AQC_MIRROR_RULE_TYPE_VLAN) {
-               desc.flags |= rte_cpu_to_le_16((uint16_t)(I40E_AQ_FLAG_BUF |
-                                                         I40E_AQ_FLAG_RD));
-               cmd.num_entries = count;
-               buff_len = sizeof(uint16_t) * count;
-               desc.datalen = rte_cpu_to_le_16(buff_len);
-               buff = (void *)entries;
-       } else
-               /* rule id is filled in destination field for deleting mirror rule */
-               cmd.destination = rte_cpu_to_le_16(rule_id);
-
-       cmd.rule_type = rte_cpu_to_le_16(rule_type <<
-                               I40E_AQC_MIRROR_RULE_TYPE_SHIFT);
-       cmd.seid = rte_cpu_to_le_16(seid);
-
-       rte_memcpy(&desc.params.raw, &cmd, sizeof(cmd));
-       status = i40e_asq_send_command(hw, &desc, buff, buff_len, NULL);
-
-       return status;
-}
-
-/**
- * i40e_mirror_rule_set
- * @dev: pointer to the hardware structure
- * @mirror_conf: mirror rule info
- * @sw_id: mirror rule's sw_id
- * @on: enable/disable
- *
- * set a mirror rule.
- *
- **/
-static int
-i40e_mirror_rule_set(struct rte_eth_dev *dev,
-                       struct rte_eth_mirror_conf *mirror_conf,
-                       uint8_t sw_id, uint8_t on)
-{
-       struct i40e_pf *pf = I40E_DEV_PRIVATE_TO_PF(dev->data->dev_private);
-       struct i40e_hw *hw = I40E_DEV_PRIVATE_TO_HW(dev->data->dev_private);
-       struct i40e_mirror_rule *it, *mirr_rule = NULL;
-       struct i40e_mirror_rule *parent = NULL;
-       uint16_t seid, dst_seid, rule_id;
-       uint16_t i, j = 0;
-       int ret;
-
-       PMD_DRV_LOG(DEBUG, "i40e_mirror_rule_set: sw_id = %d.", sw_id);
-
-       if (pf->main_vsi->veb == NULL || pf->vfs == NULL) {
-               PMD_DRV_LOG(ERR,
-                       "mirror rule can not be configured without veb or vfs.");
-               return -ENOSYS;
-       }
-       if (pf->nb_mirror_rule > I40E_MAX_MIRROR_RULES) {
-               PMD_DRV_LOG(ERR, "mirror table is full.");
-               return -ENOSPC;
-       }
-       if (mirror_conf->dst_pool > pf->vf_num) {
-               PMD_DRV_LOG(ERR, "invalid destination pool %u.",
-                                mirror_conf->dst_pool);
-               return -EINVAL;
-       }
-
-       seid = pf->main_vsi->veb->seid;
-
-       TAILQ_FOREACH(it, &pf->mirror_list, rules) {
-               if (sw_id <= it->index) {
-                       mirr_rule = it;
-                       break;
-               }
-               parent = it;
-       }
-       if (mirr_rule && sw_id == mirr_rule->index) {
-               if (on) {
-                       PMD_DRV_LOG(ERR, "mirror rule exists.");
-                       return -EEXIST;
-               } else {
-                       ret = i40e_aq_del_mirror_rule(hw, seid,
-                                       mirr_rule->rule_type,
-                                       mirr_rule->entries,
-                                       mirr_rule->num_entries, mirr_rule->id);
-                       if (ret < 0) {
-                               PMD_DRV_LOG(ERR,
-                                       "failed to remove mirror rule: ret = %d, aq_err = %d.",
-                                       ret, hw->aq.asq_last_status);
-                               return -ENOSYS;
-                       }
-                       TAILQ_REMOVE(&pf->mirror_list, mirr_rule, rules);
-                       rte_free(mirr_rule);
-                       pf->nb_mirror_rule--;
-                       return 0;
-               }
-       } else if (!on) {
-               PMD_DRV_LOG(ERR, "mirror rule doesn't exist.");
-               return -ENOENT;
-       }
-
-       mirr_rule = rte_zmalloc("i40e_mirror_rule",
-                               sizeof(struct i40e_mirror_rule) , 0);
-       if (!mirr_rule) {
-               PMD_DRV_LOG(ERR, "failed to allocate memory");
-               return I40E_ERR_NO_MEMORY;
-       }
-       switch (mirror_conf->rule_type) {
-       case ETH_MIRROR_VLAN:
-               for (i = 0, j = 0; i < ETH_MIRROR_MAX_VLANS; i++) {
-                       if (mirror_conf->vlan.vlan_mask & (1ULL << i)) {
-                               mirr_rule->entries[j] =
-                                       mirror_conf->vlan.vlan_id[i];
-                               j++;
-                       }
-               }
-               if (j == 0) {
-                       PMD_DRV_LOG(ERR, "vlan is not specified.");
-                       rte_free(mirr_rule);
-                       return -EINVAL;
-               }
-               mirr_rule->rule_type = I40E_AQC_MIRROR_RULE_TYPE_VLAN;
-               break;
-       case ETH_MIRROR_VIRTUAL_POOL_UP:
-       case ETH_MIRROR_VIRTUAL_POOL_DOWN:
-               /* check if the specified pool bit is out of range */
-               if (mirror_conf->pool_mask > (uint64_t)(1ULL << (pf->vf_num + 1))) {
-                       PMD_DRV_LOG(ERR, "pool mask is out of range.");
-                       rte_free(mirr_rule);
-                       return -EINVAL;
-               }
-               for (i = 0, j = 0; i < pf->vf_num; i++) {
-                       if (mirror_conf->pool_mask & (1ULL << i)) {
-                               mirr_rule->entries[j] = pf->vfs[i].vsi->seid;
-                               j++;
-                       }
-               }
-               if (mirror_conf->pool_mask & (1ULL << pf->vf_num)) {
-                       /* add pf vsi to entries */
-                       mirr_rule->entries[j] = pf->main_vsi_seid;
-                       j++;
-               }
-               if (j == 0) {
-                       PMD_DRV_LOG(ERR, "pool is not specified.");
-                       rte_free(mirr_rule);
-                       return -EINVAL;
-               }
-               /* egress and ingress in aq commands means from switch but not port */
-               mirr_rule->rule_type =
-                       (mirror_conf->rule_type == ETH_MIRROR_VIRTUAL_POOL_UP) ?
-                       I40E_AQC_MIRROR_RULE_TYPE_VPORT_EGRESS :
-                       I40E_AQC_MIRROR_RULE_TYPE_VPORT_INGRESS;
-               break;
-       case ETH_MIRROR_UPLINK_PORT:
-               /* egress and ingress in aq commands means from switch but not port*/
-               mirr_rule->rule_type = I40E_AQC_MIRROR_RULE_TYPE_ALL_EGRESS;
-               break;
-       case ETH_MIRROR_DOWNLINK_PORT:
-               mirr_rule->rule_type = I40E_AQC_MIRROR_RULE_TYPE_ALL_INGRESS;
-               break;
-       default:
-               PMD_DRV_LOG(ERR, "unsupported mirror type %d.",
-                       mirror_conf->rule_type);
-               rte_free(mirr_rule);
-               return -EINVAL;
-       }
-
-       /* If the dst_pool is equal to vf_num, consider it as PF */
-       if (mirror_conf->dst_pool == pf->vf_num)
-               dst_seid = pf->main_vsi_seid;
-       else
-               dst_seid = pf->vfs[mirror_conf->dst_pool].vsi->seid;
-
-       ret = i40e_aq_add_mirror_rule(hw, seid, dst_seid,
-                                     mirr_rule->rule_type, mirr_rule->entries,
-                                     j, &rule_id);
-       if (ret < 0) {
-               PMD_DRV_LOG(ERR,
-                       "failed to add mirror rule: ret = %d, aq_err = %d.",
-                       ret, hw->aq.asq_last_status);
-               rte_free(mirr_rule);
-               return -ENOSYS;
-       }
-
-       mirr_rule->index = sw_id;
-       mirr_rule->num_entries = j;
-       mirr_rule->id = rule_id;
-       mirr_rule->dst_vsi_seid = dst_seid;
-
-       if (parent)
-               TAILQ_INSERT_AFTER(&pf->mirror_list, parent, mirr_rule, rules);
-       else
-               TAILQ_INSERT_HEAD(&pf->mirror_list, mirr_rule, rules);
-
-       pf->nb_mirror_rule++;
-       return 0;
-}
-
-/**
- * i40e_mirror_rule_reset
- * @dev: pointer to the device
- * @sw_id: mirror rule's sw_id
- *
- * reset a mirror rule.
- *
- **/
-static int
-i40e_mirror_rule_reset(struct rte_eth_dev *dev, uint8_t sw_id)
-{
-       struct i40e_pf *pf = I40E_DEV_PRIVATE_TO_PF(dev->data->dev_private);
-       struct i40e_hw *hw = I40E_DEV_PRIVATE_TO_HW(dev->data->dev_private);
-       struct i40e_mirror_rule *it, *mirr_rule = NULL;
-       uint16_t seid;
-       int ret;
-
-       PMD_DRV_LOG(DEBUG, "i40e_mirror_rule_reset: sw_id = %d.", sw_id);
-
-       seid = pf->main_vsi->veb->seid;
-
-       TAILQ_FOREACH(it, &pf->mirror_list, rules) {
-               if (sw_id == it->index) {
-                       mirr_rule = it;
-                       break;
-               }
-       }
-       if (mirr_rule) {
-               ret = i40e_aq_del_mirror_rule(hw, seid,
-                               mirr_rule->rule_type,
-                               mirr_rule->entries,
-                               mirr_rule->num_entries, mirr_rule->id);
-               if (ret < 0) {
-                       PMD_DRV_LOG(ERR,
-                               "failed to remove mirror rule: status = %d, aq_err = %d.",
-                               ret, hw->aq.asq_last_status);
-                       return -ENOSYS;
-               }
-               TAILQ_REMOVE(&pf->mirror_list, mirr_rule, rules);
-               rte_free(mirr_rule);
-               pf->nb_mirror_rule--;
-       } else {
-               PMD_DRV_LOG(ERR, "mirror rule doesn't exist.");
-               return -ENOENT;
-       }
-       return 0;
-}
-
 static uint64_t
 i40e_read_systime_cyclecounter(struct rte_eth_dev *dev)
 {