For net_af_packet PMD, eth_link_update was an empty function. Application may be interested in link up/down status. This patch adds implementation that updates dev_link->link_status based on socket IFF_RUNNING flag.
Signed-off-by: Gur Stavi <gur.st...@huawei.com> --- v2: * return error on ioctl error v1: https://mails.dpdk.org/archives/dev/2024-October/304831.html --- drivers/net/af_packet/rte_eth_af_packet.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/drivers/net/af_packet/rte_eth_af_packet.c b/drivers/net/af_packet/rte_eth_af_packet.c index 68870dd3e2..fb4743f3e0 100644 --- a/drivers/net/af_packet/rte_eth_af_packet.c +++ b/drivers/net/af_packet/rte_eth_af_packet.c @@ -472,9 +472,22 @@ eth_dev_close(struct rte_eth_dev *dev) } static int -eth_link_update(struct rte_eth_dev *dev __rte_unused, +eth_link_update(struct rte_eth_dev *dev, int wait_to_complete __rte_unused) { + const struct pmd_internals *internals = dev->data->dev_private; + struct rte_eth_link *dev_link = &dev->data->dev_link; + int sockfd = internals->rx_queue[0].sockfd; + struct ifreq ifr = { }; + + if (sockfd == -1) + return 0; + + strlcpy(ifr.ifr_name, internals->if_name, IFNAMSIZ); + if (ioctl(sockfd, SIOCGIFFLAGS, &ifr) < 0) + return -errno; + dev_link->link_status = (ifr.ifr_flags & IFF_RUNNING) ? + RTE_ETH_LINK_UP : RTE_ETH_LINK_DOWN; return 0; } base-commit: 98613d32e3dac58d685f4f236cf8cc9733abaaf3 -- 2.40.1