#include "cnxk_ethdev.h"
+void
+cnxk_nix_toggle_flag_link_cfg(struct cnxk_eth_dev *dev, bool set)
+{
+ if (set)
+ dev->flags |= CNXK_LINK_CFG_IN_PROGRESS_F;
+ else
+ dev->flags &= ~CNXK_LINK_CFG_IN_PROGRESS_F;
+
+ rte_wmb();
+}
+
static inline int
nix_wait_for_link_cfg(struct cnxk_eth_dev *dev)
{
plt_info("Port %d: Link Up - speed %u Mbps - %s",
(int)(eth_dev->data->port_id),
(uint32_t)link->link_speed,
- link->link_duplex == ETH_LINK_FULL_DUPLEX
+ link->link_duplex == RTE_ETH_LINK_FULL_DUPLEX
? "full-duplex"
: "half-duplex");
else
plt_info("Port %d: Link Down", (int)(eth_dev->data->port_id));
}
+void
+cnxk_eth_dev_link_status_get_cb(struct roc_nix *nix,
+ struct roc_nix_link_info *link)
+{
+ struct cnxk_eth_dev *dev = (struct cnxk_eth_dev *)nix;
+ struct rte_eth_link eth_link;
+ struct rte_eth_dev *eth_dev;
+
+ if (!link || !nix)
+ return;
+
+ eth_dev = dev->eth_dev;
+ if (!eth_dev)
+ return;
+
+ rte_eth_linkstatus_get(eth_dev, ð_link);
+
+ link->status = eth_link.link_status;
+ link->speed = eth_link.link_speed;
+ link->autoneg = eth_link.link_autoneg;
+ link->full_duplex = eth_link.link_duplex;
+}
+
void
cnxk_eth_dev_link_status_cb(struct roc_nix *nix, struct roc_nix_link_info *link)
{
eth_link.link_status = link->status;
eth_link.link_speed = link->speed;
- eth_link.link_autoneg = ETH_LINK_AUTONEG;
+ eth_link.link_autoneg = RTE_ETH_LINK_AUTONEG;
eth_link.link_duplex = link->full_duplex;
/* Print link info */
RTE_SET_USED(wait_to_complete);
memset(&link, 0, sizeof(struct rte_eth_link));
- if (roc_nix_is_sdp(&dev->nix))
+ if (!eth_dev->data->dev_started || roc_nix_is_sdp(&dev->nix))
return 0;
if (roc_nix_is_lbk(&dev->nix)) {
- link.link_status = ETH_LINK_UP;
- link.link_speed = ETH_SPEED_NUM_100G;
- link.link_autoneg = ETH_LINK_FIXED;
- link.link_duplex = ETH_LINK_FULL_DUPLEX;
+ link.link_status = RTE_ETH_LINK_UP;
+ link.link_speed = RTE_ETH_SPEED_NUM_100G;
+ link.link_autoneg = RTE_ETH_LINK_FIXED;
+ link.link_duplex = RTE_ETH_LINK_FULL_DUPLEX;
} else {
rc = roc_nix_mac_link_info_get(&dev->nix, &info);
if (rc)
return rc;
link.link_status = info.status;
link.link_speed = info.speed;
- link.link_autoneg = ETH_LINK_AUTONEG;
+ link.link_autoneg = RTE_ETH_LINK_AUTONEG;
if (info.full_duplex)
link.link_duplex = info.full_duplex;
}