net/mlx5: remove pedantic pragma
[dpdk.git] / drivers / net / mlx5 / mlx5_mac.c
index b1f34d9..45d23e4 100644 (file)
 #include <inttypes.h>
 #include <errno.h>
 #include <netinet/in.h>
-#include <linux/if.h>
 #include <sys/ioctl.h>
 #include <arpa/inet.h>
 
 /* Verbs header. */
 /* ISO C doesn't support unnamed structs/unions, disabling -pedantic. */
 #ifdef PEDANTIC
-#pragma GCC diagnostic ignored "-pedantic"
+#pragma GCC diagnostic ignored "-Wpedantic"
 #endif
 #include <infiniband/verbs.h>
 #ifdef PEDANTIC
-#pragma GCC diagnostic error "-pedantic"
+#pragma GCC diagnostic error "-Wpedantic"
 #endif
 
-/* DPDK headers don't like -pedantic. */
-#ifdef PEDANTIC
-#pragma GCC diagnostic ignored "-pedantic"
-#endif
 #include <rte_ether.h>
 #include <rte_ethdev.h>
 #include <rte_common.h>
-#ifdef PEDANTIC
-#pragma GCC diagnostic error "-pedantic"
-#endif
 
 #include "mlx5.h"
 #include "mlx5_utils.h"
@@ -209,11 +201,13 @@ mlx5_mac_addr_remove(struct rte_eth_dev *dev, uint32_t index)
 {
        struct priv *priv = dev->data->dev_private;
 
+       if (mlx5_is_secondary())
+               return;
+
        priv_lock(priv);
        DEBUG("%p: removing MAC address from index %" PRIu32,
              (void *)dev, index);
-       /* Last array entry is reserved for broadcast. */
-       if (index >= (RTE_DIM(priv->mac) - 1))
+       if (index >= RTE_DIM(priv->mac))
                goto end;
        priv_mac_addr_del(priv, index);
 end:
@@ -242,7 +236,7 @@ hash_rxq_add_mac_flow(struct hash_rxq *hash_rxq, unsigned int mac_index,
        const uint8_t (*mac)[ETHER_ADDR_LEN] =
                        (const uint8_t (*)[ETHER_ADDR_LEN])
                        priv->mac[mac_index].addr_bytes;
-       FLOW_ATTR_SPEC_ETH(data, hash_rxq_flow_attr(hash_rxq, NULL, 0));
+       FLOW_ATTR_SPEC_ETH(data, priv_flow_attr(priv, NULL, 0, hash_rxq->type));
        struct ibv_exp_flow_attr *attr = &data->attr;
        struct ibv_exp_flow_spec_eth *spec = &data->spec;
        unsigned int vlan_enabled = !!priv->vlan_filter_n;
@@ -257,7 +251,7 @@ hash_rxq_add_mac_flow(struct hash_rxq *hash_rxq, unsigned int mac_index,
         * This layout is expected by libibverbs.
         */
        assert(((uint8_t *)attr + sizeof(*attr)) == (uint8_t *)spec);
-       hash_rxq_flow_attr(hash_rxq, attr, sizeof(data));
+       priv_flow_attr(priv, attr, sizeof(data), hash_rxq->type);
        /* The first specification must be Ethernet. */
        assert(spec->type == IBV_EXP_FLOW_SPEC_ETH);
        assert(spec->size == sizeof(*spec));
@@ -442,6 +436,8 @@ priv_mac_addrs_enable(struct priv *priv)
        unsigned int i;
        int ret;
 
+       if (priv->isolated)
+               return 0;
        if (!priv_allow_flow_type(priv, HASH_RXQ_FLOW_TYPE_MAC))
                return 0;
        for (i = 0; (i != priv->hash_rxqs_n); ++i) {
@@ -469,24 +465,30 @@ priv_mac_addrs_enable(struct priv *priv)
  * @param vmdq
  *   VMDq pool index to associate address with (ignored).
  */
-void
+int
 mlx5_mac_addr_add(struct rte_eth_dev *dev, struct ether_addr *mac_addr,
                  uint32_t index, uint32_t vmdq)
 {
        struct priv *priv = dev->data->dev_private;
+       int re;
+
+       if (mlx5_is_secondary())
+               return -ENOTSUP;
 
        (void)vmdq;
        priv_lock(priv);
        DEBUG("%p: adding MAC address at index %" PRIu32,
              (void *)dev, index);
-       /* Last array entry is reserved for broadcast. */
-       if (index >= (RTE_DIM(priv->mac) - 1))
+       if (index >= RTE_DIM(priv->mac)) {
+               re = EINVAL;
                goto end;
-       priv_mac_addr_add(priv, index,
-                         (const uint8_t (*)[ETHER_ADDR_LEN])
-                         mac_addr->addr_bytes);
+       }
+       re = priv_mac_addr_add(priv, index,
+                              (const uint8_t (*)[ETHER_ADDR_LEN])
+                              mac_addr->addr_bytes);
 end:
        priv_unlock(priv);
+       return -re;
 }
 
 /**