net/hns3: support MAC address related operations
[dpdk.git] / drivers / net / mlx5 / mlx5_trigger.c
index 69681e2..122f31c 100644 (file)
@@ -99,7 +99,14 @@ mlx5_rxq_start(struct rte_eth_dev *dev)
        struct mlx5_priv *priv = dev->data->dev_private;
        unsigned int i;
        int ret = 0;
+       enum mlx5_rxq_obj_type obj_type = MLX5_RXQ_OBJ_TYPE_IBV;
 
+       for (i = 0; i < priv->rxqs_n; ++i) {
+               if ((*priv->rxqs)[i]->lro) {
+                       obj_type =  MLX5_RXQ_OBJ_TYPE_DEVX_RQ;
+                       break;
+               }
+       }
        /* Allocate/reuse/resize mempool for Multi-Packet RQ. */
        if (mlx5_mprq_alloc_mp(dev)) {
                /* Should not release Rx queues but return immediately. */
@@ -123,9 +130,13 @@ mlx5_rxq_start(struct rte_eth_dev *dev)
                ret = rxq_alloc_elts(rxq_ctrl);
                if (ret)
                        goto error;
-               rxq_ctrl->ibv = mlx5_rxq_ibv_new(dev, i);
-               if (!rxq_ctrl->ibv)
+               rxq_ctrl->obj = mlx5_rxq_obj_new(dev, i, obj_type);
+               if (!rxq_ctrl->obj)
                        goto error;
+               if (obj_type == MLX5_RXQ_OBJ_TYPE_IBV)
+                       rxq_ctrl->wqn = rxq_ctrl->obj->wq->wq_num;
+               else if (obj_type == MLX5_RXQ_OBJ_TYPE_DEVX_RQ)
+                       rxq_ctrl->wqn = rxq_ctrl->obj->rq->id;
        }
        return 0;
 error:
@@ -275,6 +286,9 @@ mlx5_traffic_enable(struct rte_eth_dev *dev)
        unsigned int j;
        int ret;
 
+       if (priv->config.dv_esw_en && !priv->config.vf)
+               if (!mlx5_flow_create_esw_table_zero_flow(dev))
+                       goto error;
        if (priv->isolated)
                return 0;
        if (dev->data->promiscuous) {
@@ -337,7 +351,7 @@ mlx5_traffic_enable(struct rte_eth_dev *dev)
                        continue;
                memcpy(&unicast.dst.addr_bytes,
                       mac->addr_bytes,
-                      ETHER_ADDR_LEN);
+                      RTE_ETHER_ADDR_LEN);
                for (j = 0; j != vlan_filter_n; ++j) {
                        uint16_t vlan = priv->vlan_filter[j];