net/szedata2: use link status helper functions
authorStephen Hemminger <stephen@networkplumber.org>
Fri, 26 Jan 2018 02:01:49 +0000 (18:01 -0800)
committerFerruh Yigit <ferruh.yigit@intel.com>
Fri, 30 Mar 2018 12:08:43 +0000 (14:08 +0200)
Yet another driver which was not returing correct value on
link change.

Use new rte_eth_linkstatus_get/set helper functions to handle link
status update.

Since this driver can't be built on x86 could not even
do a compile test.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
drivers/net/szedata2/rte_eth_szedata2.c

index e53c738..1d02aee 100644 (file)
@@ -50,7 +50,6 @@
 #include <rte_memcpy.h>
 #include <rte_kvargs.h>
 #include <rte_dev.h>
-#include <rte_atomic.h>
 
 #include "rte_eth_szedata2.h"
 #include "szedata2_iobuf.h"
@@ -1174,14 +1173,14 @@ eth_link_update(struct rte_eth_dev *dev,
                int wait_to_complete __rte_unused)
 {
        struct rte_eth_link link;
-       struct rte_eth_link *link_ptr = &link;
-       struct rte_eth_link *dev_link = &dev->data->dev_link;
        struct pmd_internals *internals = (struct pmd_internals *)
                dev->data->dev_private;
        const volatile struct szedata2_ibuf *ibuf;
        uint32_t i;
        bool link_is_up = false;
 
+       memset(&link, 0, sizeof(link));
+
        switch (get_link_speed(internals)) {
        case SZEDATA2_LINK_SPEED_10G:
                link.link_speed = ETH_SPEED_NUM_10G;
@@ -1212,13 +1211,11 @@ eth_link_update(struct rte_eth_dev *dev,
                }
        }
 
-       link.link_status = (link_is_up) ? ETH_LINK_UP : ETH_LINK_DOWN;
+       link.link_status = link_is_up ? ETH_LINK_UP : ETH_LINK_DOWN;
 
        link.link_autoneg = ETH_LINK_FIXED;
 
-       rte_atomic64_cmpset((uint64_t *)dev_link, *(uint64_t *)dev_link,
-                       *(uint64_t *)link_ptr);
-
+       rte_eth_linkstatus_set(dev, &link);
        return 0;
 }