net/mlx5: convert to new Rx offloads API
[dpdk.git] / drivers / net / mlx5 / mlx5_ethdev.c
index 7b1b7aa..278a4df 100644 (file)
@@ -553,6 +553,10 @@ dev_configure(struct rte_eth_dev *dev)
                !!dev->data->dev_conf.rx_adv_conf.rss_conf.rss_key;
        uint64_t supp_tx_offloads = mlx5_priv_get_tx_port_offloads(priv);
        uint64_t tx_offloads = dev->data->dev_conf.txmode.offloads;
+       uint64_t supp_rx_offloads =
+               (mlx5_priv_get_rx_port_offloads(priv) |
+                mlx5_priv_get_rx_queue_offloads(priv));
+       uint64_t rx_offloads = dev->data->dev_conf.rxmode.offloads;
 
        if ((tx_offloads & supp_tx_offloads) != tx_offloads) {
                ERROR("Some Tx offloads are not supported "
@@ -560,6 +564,12 @@ dev_configure(struct rte_eth_dev *dev)
                      tx_offloads, supp_tx_offloads);
                return ENOTSUP;
        }
+       if ((rx_offloads & supp_rx_offloads) != rx_offloads) {
+               ERROR("Some Rx offloads are not supported "
+                     "requested 0x%" PRIx64 " supported 0x%" PRIx64,
+                     rx_offloads, supp_rx_offloads);
+               return ENOTSUP;
+       }
        if (use_app_rss_key &&
            (dev->data->dev_conf.rx_adv_conf.rss_conf.rss_key_len !=
             rss_hash_default_key_len)) {
@@ -671,15 +681,10 @@ mlx5_dev_infos_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *info)
        info->max_rx_queues = max;
        info->max_tx_queues = max;
        info->max_mac_addrs = RTE_DIM(priv->mac);
-       info->rx_offload_capa =
-               (config->hw_csum ?
-                (DEV_RX_OFFLOAD_IPV4_CKSUM |
-                 DEV_RX_OFFLOAD_UDP_CKSUM |
-                 DEV_RX_OFFLOAD_TCP_CKSUM) :
-                0) |
-               (priv->config.hw_vlan_strip ? DEV_RX_OFFLOAD_VLAN_STRIP : 0) |
-               DEV_RX_OFFLOAD_TIMESTAMP;
-
+       info->rx_queue_offload_capa =
+               mlx5_priv_get_rx_queue_offloads(priv);
+       info->rx_offload_capa = (mlx5_priv_get_rx_port_offloads(priv) |
+                                info->rx_queue_offload_capa);
        info->tx_offload_capa = mlx5_priv_get_tx_port_offloads(priv);
        if (priv_get_ifname(priv, &ifname) == 0)
                info->if_index = if_nametoindex(ifname);