net/qede/base: update FW to 8.40.25.0
[dpdk.git] / drivers / net / af_xdp / rte_eth_af_xdp.c
index ff8e905..f9686c2 100644 (file)
@@ -97,7 +97,6 @@ struct pkt_rx_queue {
 
 struct tx_stats {
        uint64_t tx_pkts;
-       uint64_t err_pkts;
        uint64_t tx_bytes;
 };
 
@@ -404,7 +403,7 @@ eth_dev_configure(struct rte_eth_dev *dev)
        return 0;
 }
 
-static void
+static int
 eth_dev_info(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info)
 {
        struct pmd_internals *internals = dev->data->dev_private;
@@ -422,6 +421,8 @@ eth_dev_info(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info)
        dev_info->default_txportconf.nb_queues = 1;
        dev_info->default_rxportconf.ring_size = ETH_AF_XDP_DFLT_NUM_DESCS;
        dev_info->default_txportconf.ring_size = ETH_AF_XDP_DFLT_NUM_DESCS;
+
+       return 0;
 }
 
 static int
@@ -456,14 +457,13 @@ eth_stats_get(struct rte_eth_dev *dev, struct rte_eth_stats *stats)
                stats->imissed += xdp_stats.rx_dropped;
 
                stats->opackets += stats->q_opackets[i];
-               stats->oerrors += txq->stats.err_pkts;
                stats->obytes += stats->q_obytes[i];
        }
 
        return 0;
 }
 
-static void
+static int
 eth_stats_reset(struct rte_eth_dev *dev)
 {
        struct pmd_internals *internals = dev->data->dev_private;
@@ -475,6 +475,8 @@ eth_stats_reset(struct rte_eth_dev *dev)
                memset(&internals->tx_queues[i].stats, 0,
                                        sizeof(struct tx_stats));
        }
+
+       return 0;
 }
 
 static void
@@ -746,41 +748,47 @@ eth_dev_mtu_set(struct rte_eth_dev *dev, uint16_t mtu)
        return (ret < 0) ? -errno : 0;
 }
 
-static void
+static int
 eth_dev_change_flags(char *if_name, uint32_t flags, uint32_t mask)
 {
        struct ifreq ifr;
+       int ret = 0;
        int s;
 
        s = socket(PF_INET, SOCK_DGRAM, 0);
        if (s < 0)
-               return;
+               return -errno;
 
        strlcpy(ifr.ifr_name, if_name, IFNAMSIZ);
-       if (ioctl(s, SIOCGIFFLAGS, &ifr) < 0)
+       if (ioctl(s, SIOCGIFFLAGS, &ifr) < 0) {
+               ret = -errno;
                goto out;
+       }
        ifr.ifr_flags &= mask;
        ifr.ifr_flags |= flags;
-       if (ioctl(s, SIOCSIFFLAGS, &ifr) < 0)
+       if (ioctl(s, SIOCSIFFLAGS, &ifr) < 0) {
+               ret = -errno;
                goto out;
+       }
 out:
        close(s);
+       return ret;
 }
 
-static void
+static int
 eth_dev_promiscuous_enable(struct rte_eth_dev *dev)
 {
        struct pmd_internals *internals = dev->data->dev_private;
 
-       eth_dev_change_flags(internals->if_name, IFF_PROMISC, ~0);
+       return eth_dev_change_flags(internals->if_name, IFF_PROMISC, ~0);
 }
 
-static void
+static int
 eth_dev_promiscuous_disable(struct rte_eth_dev *dev)
 {
        struct pmd_internals *internals = dev->data->dev_private;
 
-       eth_dev_change_flags(internals->if_name, 0, ~IFF_PROMISC);
+       return eth_dev_change_flags(internals->if_name, 0, ~IFF_PROMISC);
 }
 
 static const struct eth_dev_ops ops = {
@@ -852,9 +860,13 @@ xdp_get_channels_info(const char *if_name, int *max_queues,
        ifr.ifr_data = (void *)&channels;
        strncpy(ifr.ifr_name, if_name, IFNAMSIZ);
        ret = ioctl(fd, SIOCETHTOOL, &ifr);
-       if (ret && errno != EOPNOTSUPP) {
-               ret = -errno;
-               goto out;
+       if (ret) {
+               if (errno == EOPNOTSUPP) {
+                       ret = 0;
+               } else {
+                       ret = -errno;
+                       goto out;
+               }
        }
 
        if (channels.max_combined == 0 || errno == EOPNOTSUPP) {