Use new helper API.

Signed-off-by: Stephen Hemminger <step...@networkplumber.org>
---
 drivers/net/e1000/em_ethdev.c  | 70 +++--------------------------------------
 drivers/net/e1000/igb_ethdev.c | 71 +++---------------------------------------
 2 files changed, 10 insertions(+), 131 deletions(-)

diff --git a/drivers/net/e1000/em_ethdev.c b/drivers/net/e1000/em_ethdev.c
index 3d4ab93687f6..8d9783adcec0 100644
--- a/drivers/net/e1000/em_ethdev.c
+++ b/drivers/net/e1000/em_ethdev.c
@@ -49,7 +49,6 @@
 #include <rte_memory.h>
 #include <rte_memzone.h>
 #include <rte_eal.h>
-#include <rte_atomic.h>
 #include <rte_malloc.h>
 #include <rte_dev.h>
 
@@ -222,57 +221,6 @@ static const struct eth_dev_ops eth_em_ops = {
        .txq_info_get         = em_txq_info_get,
 };
 
-/**
- * Atomically reads the link status information from global
- * structure rte_eth_dev.
- *
- * @param dev
- *   - Pointer to the structure rte_eth_dev to read from.
- *   - Pointer to the buffer to be saved with the link status.
- *
- * @return
- *   - On success, zero.
- *   - On failure, negative value.
- */
-static inline int
-rte_em_dev_atomic_read_link_status(struct rte_eth_dev *dev,
-                               struct rte_eth_link *link)
-{
-       struct rte_eth_link *dst = link;
-       struct rte_eth_link *src = &(dev->data->dev_link);
-
-       if (rte_atomic64_cmpset((uint64_t *)dst, *(uint64_t *)dst,
-                                       *(uint64_t *)src) == 0)
-               return -1;
-
-       return 0;
-}
-
-/**
- * Atomically writes the link status information into global
- * structure rte_eth_dev.
- *
- * @param dev
- *   - Pointer to the structure rte_eth_dev to read from.
- *   - Pointer to the buffer to be saved with the link status.
- *
- * @return
- *   - On success, zero.
- *   - On failure, negative value.
- */
-static inline int
-rte_em_dev_atomic_write_link_status(struct rte_eth_dev *dev,
-                               struct rte_eth_link *link)
-{
-       struct rte_eth_link *dst = &(dev->data->dev_link);
-       struct rte_eth_link *src = link;
-
-       if (rte_atomic64_cmpset((uint64_t *)dst, *(uint64_t *)dst,
-                                       *(uint64_t *)src) == 0)
-               return -1;
-
-       return 0;
-}
 
 /**
  *  eth_em_dev_is_ich8 - Check for ICH8 device
@@ -793,7 +741,7 @@ eth_em_stop(struct rte_eth_dev *dev)
 
        /* clear the recorded link status */
        memset(&link, 0, sizeof(link));
-       rte_em_dev_atomic_write_link_status(dev, &link);
+       _rte_eth_link_update(dev, &link);
 
        if (!rte_intr_allow_others(intr_handle))
                /* resume to the default handler */
@@ -1150,7 +1098,7 @@ eth_em_link_update(struct rte_eth_dev *dev, int 
wait_to_complete)
 {
        struct e1000_hw *hw =
                E1000_DEV_PRIVATE_TO_HW(dev->data->dev_private);
-       struct rte_eth_link link, old;
+       struct rte_eth_link link;
        int link_check, count;
 
        link_check = 0;
@@ -1185,8 +1133,6 @@ eth_em_link_update(struct rte_eth_dev *dev, int 
wait_to_complete)
                rte_delay_ms(EM_LINK_UPDATE_CHECK_INTERVAL);
        }
        memset(&link, 0, sizeof(link));
-       rte_em_dev_atomic_read_link_status(dev, &link);
-       old = link;
 
        /* Now we check if a transition has happened */
        if (link_check && (link.link_status == ETH_LINK_DOWN)) {
@@ -1205,14 +1151,8 @@ eth_em_link_update(struct rte_eth_dev *dev, int 
wait_to_complete)
                link.link_status = ETH_LINK_DOWN;
                link.link_autoneg = ETH_LINK_SPEED_FIXED;
        }
-       rte_em_dev_atomic_write_link_status(dev, &link);
-
-       /* not changed */
-       if (old.link_status == link.link_status)
-               return -1;
 
-       /* changed */
-       return 0;
+       return _rte_eth_link_update(dev, &link);
 }
 
 /*
@@ -1620,8 +1560,8 @@ eth_em_interrupt_action(struct rte_eth_dev *dev,
        if (ret < 0)
                return 0;
 
-       memset(&link, 0, sizeof(link));
-       rte_em_dev_atomic_read_link_status(dev, &link);
+       _rte_eth_link_read(dev, &link);
+
        if (link.link_status) {
                PMD_INIT_LOG(INFO, " Port %d: Link Up - speed %u Mbps - %s",
                             dev->data->port_id, (unsigned)link.link_speed,
diff --git a/drivers/net/e1000/igb_ethdev.c b/drivers/net/e1000/igb_ethdev.c
index da03d9bb348e..1a28d2fee286 100644
--- a/drivers/net/e1000/igb_ethdev.c
+++ b/drivers/net/e1000/igb_ethdev.c
@@ -49,7 +49,6 @@
 #include <rte_memory.h>
 #include <rte_memzone.h>
 #include <rte_eal.h>
-#include <rte_atomic.h>
 #include <rte_malloc.h>
 #include <rte_dev.h>
 
@@ -549,57 +548,6 @@ static const struct rte_igb_xstats_name_off 
rte_igbvf_stats_strings[] = {
 #define IGBVF_NB_XSTATS (sizeof(rte_igbvf_stats_strings) / \
                sizeof(rte_igbvf_stats_strings[0]))
 
-/**
- * Atomically reads the link status information from global
- * structure rte_eth_dev.
- *
- * @param dev
- *   - Pointer to the structure rte_eth_dev to read from.
- *   - Pointer to the buffer to be saved with the link status.
- *
- * @return
- *   - On success, zero.
- *   - On failure, negative value.
- */
-static inline int
-rte_igb_dev_atomic_read_link_status(struct rte_eth_dev *dev,
-                               struct rte_eth_link *link)
-{
-       struct rte_eth_link *dst = link;
-       struct rte_eth_link *src = &(dev->data->dev_link);
-
-       if (rte_atomic64_cmpset((uint64_t *)dst, *(uint64_t *)dst,
-                                       *(uint64_t *)src) == 0)
-               return -1;
-
-       return 0;
-}
-
-/**
- * Atomically writes the link status information into global
- * structure rte_eth_dev.
- *
- * @param dev
- *   - Pointer to the structure rte_eth_dev to read from.
- *   - Pointer to the buffer to be saved with the link status.
- *
- * @return
- *   - On success, zero.
- *   - On failure, negative value.
- */
-static inline int
-rte_igb_dev_atomic_write_link_status(struct rte_eth_dev *dev,
-                               struct rte_eth_link *link)
-{
-       struct rte_eth_link *dst = &(dev->data->dev_link);
-       struct rte_eth_link *src = link;
-
-       if (rte_atomic64_cmpset((uint64_t *)dst, *(uint64_t *)dst,
-                                       *(uint64_t *)src) == 0)
-               return -1;
-
-       return 0;
-}
 
 static inline void
 igb_intr_enable(struct rte_eth_dev *dev)
@@ -1545,7 +1493,7 @@ eth_igb_stop(struct rte_eth_dev *dev)
 
        /* clear the recorded link status */
        memset(&link, 0, sizeof(link));
-       rte_igb_dev_atomic_write_link_status(dev, &link);
+       _rte_eth_link_update(dev, &link);
 
        if (!rte_intr_allow_others(intr_handle))
                /* resume to the default handler */
@@ -1621,7 +1569,7 @@ eth_igb_close(struct rte_eth_dev *dev)
        }
 
        memset(&link, 0, sizeof(link));
-       rte_igb_dev_atomic_write_link_status(dev, &link);
+       _rte_eth_link_update(dev, &link);
 }
 
 static int
@@ -2366,7 +2314,7 @@ eth_igb_link_update(struct rte_eth_dev *dev, int 
wait_to_complete)
 {
        struct e1000_hw *hw =
                E1000_DEV_PRIVATE_TO_HW(dev->data->dev_private);
-       struct rte_eth_link link, old;
+       struct rte_eth_link link;
        int link_check, count;
 
        link_check = 0;
@@ -2407,8 +2355,6 @@ eth_igb_link_update(struct rte_eth_dev *dev, int 
wait_to_complete)
                rte_delay_ms(IGB_LINK_UPDATE_CHECK_INTERVAL);
        }
        memset(&link, 0, sizeof(link));
-       rte_igb_dev_atomic_read_link_status(dev, &link);
-       old = link;
 
        /* Now we check if a transition has happened */
        if (link_check) {
@@ -2427,14 +2373,8 @@ eth_igb_link_update(struct rte_eth_dev *dev, int 
wait_to_complete)
                link.link_status = ETH_LINK_DOWN;
                link.link_autoneg = ETH_LINK_SPEED_FIXED;
        }
-       rte_igb_dev_atomic_write_link_status(dev, &link);
 
-       /* not changed */
-       if (old.link_status == link.link_status)
-               return -1;
-
-       /* changed */
-       return 0;
+       return _rte_eth_link_update(dev, &link);
 }
 
 /*
@@ -2865,8 +2805,7 @@ eth_igb_interrupt_action(struct rte_eth_dev *dev,
                if (ret < 0)
                        return 0;
 
-               memset(&link, 0, sizeof(link));
-               rte_igb_dev_atomic_read_link_status(dev, &link);
+               _rte_eth_link_read(dev, &link);
                if (link.link_status) {
                        PMD_INIT_LOG(INFO,
                                     " Port %d: Link Up - speed %u Mbps - %s",
-- 
2.11.0

Reply via email to