aboutsummaryrefslogtreecommitdiffstats
path: root/common/dpdk/recipes-extended/dpdk/dpdk/dpdk-dev-v3-12-18-net-axgbe-add-link-status-update.patch
diff options
context:
space:
mode:
Diffstat (limited to 'common/dpdk/recipes-extended/dpdk/dpdk/dpdk-dev-v3-12-18-net-axgbe-add-link-status-update.patch')
-rw-r--r--common/dpdk/recipes-extended/dpdk/dpdk/dpdk-dev-v3-12-18-net-axgbe-add-link-status-update.patch90
1 files changed, 90 insertions, 0 deletions
diff --git a/common/dpdk/recipes-extended/dpdk/dpdk/dpdk-dev-v3-12-18-net-axgbe-add-link-status-update.patch b/common/dpdk/recipes-extended/dpdk/dpdk/dpdk-dev-v3-12-18-net-axgbe-add-link-status-update.patch
new file mode 100644
index 00000000..68cb5f36
--- /dev/null
+++ b/common/dpdk/recipes-extended/dpdk/dpdk/dpdk-dev-v3-12-18-net-axgbe-add-link-status-update.patch
@@ -0,0 +1,90 @@
+From patchwork Fri Mar 9 08:42:28 2018
+Content-Type: text/plain; charset="utf-8"
+MIME-Version: 1.0
+Content-Transfer-Encoding: 7bit
+Subject: [dpdk-dev,v3,12/18] net/axgbe: add link status update
+From: Ravi Kumar <ravi1.kumar@amd.com>
+X-Patchwork-Id: 35831
+X-Patchwork-Delegate: ferruh.yigit@intel.com
+Message-Id: <1520584954-130575-12-git-send-email-Ravi1.kumar@amd.com>
+List-Id: dev.dpdk.org
+To: dev@dpdk.org
+Cc: ferruh.yigit@intel.com
+Date: Fri, 9 Mar 2018 03:42:28 -0500
+
+Signed-off-by: Ravi Kumar <Ravi1.kumar@amd.com>
+---
+ doc/guides/nics/features/axgbe.ini | 1 +
+ drivers/net/axgbe/axgbe_ethdev.c | 33 +++++++++++++++++++++++++++++++++
+ 2 files changed, 34 insertions(+)
+
+diff --git a/doc/guides/nics/features/axgbe.ini b/doc/guides/nics/features/axgbe.ini
+index f644128..2dbff18 100644
+--- a/doc/guides/nics/features/axgbe.ini
++++ b/doc/guides/nics/features/axgbe.ini
+@@ -5,6 +5,7 @@
+ ;
+ [Features]
+ Speed capabilities = Y
++Link status = Y
+ Jumbo frame = Y
+ RSS hash = Y
+ CRC offload = Y
+diff --git a/drivers/net/axgbe/axgbe_ethdev.c b/drivers/net/axgbe/axgbe_ethdev.c
+index ae78e09..ebae6cc 100644
+--- a/drivers/net/axgbe/axgbe_ethdev.c
++++ b/drivers/net/axgbe/axgbe_ethdev.c
+@@ -137,6 +137,8 @@ static int axgbe_dev_start(struct rte_eth_dev *dev);
+ static void axgbe_dev_stop(struct rte_eth_dev *dev);
+ static void axgbe_dev_interrupt_handler(void *param);
+ static void axgbe_dev_close(struct rte_eth_dev *dev);
++static int axgbe_dev_link_update(struct rte_eth_dev *dev,
++ int wait_to_complete);
+ static void axgbe_dev_info_get(struct rte_eth_dev *dev,
+ struct rte_eth_dev_info *dev_info);
+
+@@ -193,6 +195,7 @@ static const struct eth_dev_ops axgbe_eth_dev_ops = {
+ .dev_start = axgbe_dev_start,
+ .dev_stop = axgbe_dev_stop,
+ .dev_close = axgbe_dev_close,
++ .link_update = axgbe_dev_link_update,
+ .dev_infos_get = axgbe_dev_info_get,
+ .rx_queue_setup = axgbe_dev_rx_queue_setup,
+ .rx_queue_release = axgbe_dev_rx_queue_release,
+@@ -338,6 +341,36 @@ axgbe_dev_close(struct rte_eth_dev *dev)
+ axgbe_dev_clear_queues(dev);
+ }
+
++/* return 0 means link status changed, -1 means not changed */
++static int
++axgbe_dev_link_update(struct rte_eth_dev *dev,
++ int wait_to_complete __rte_unused)
++{
++ PMD_INIT_FUNC_TRACE();
++ rte_delay_ms(800);
++
++ struct axgbe_port *pdata = dev->data->dev_private;
++ int old_link_status = dev->data->dev_link.link_status;
++
++ pdata->phy_if.phy_status(pdata);
++
++ dev->data->dev_link.link_speed = pdata->phy_speed;
++ switch (pdata->phy.duplex) {
++ case DUPLEX_FULL:
++ dev->data->dev_link.link_duplex = ETH_LINK_FULL_DUPLEX;
++ break;
++ case DUPLEX_HALF:
++ dev->data->dev_link.link_duplex = ETH_LINK_HALF_DUPLEX;
++ break;
++ }
++ dev->data->dev_link.link_autoneg = !(dev->data->dev_conf.link_speeds &
++ ETH_LINK_SPEED_FIXED);
++ dev->data->dev_link.link_status = pdata->phy_link;
++
++ return old_link_status == dev->data->dev_link.link_status ? -1 : 0;
++}
++
++
+ static void
+ axgbe_dev_info_get(struct rte_eth_dev *dev,
+ struct rte_eth_dev_info *dev_info)