kni: update link only on change

Message ID 20210624133216.3088933-1-ferruh.yigit@intel.com (mailing list archive)
State Accepted, archived
Delegated to: Thomas Monjalon
Headers
Series kni: update link only on change |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation success Compilation OK
ci/intel-Testing success Testing PASS
ci/iol-abi-testing success Testing PASS
ci/github-robot success github build: passed
ci/iol-testing success Testing PASS
ci/iol-intel-Performance success Performance Testing PASS
ci/iol-intel-Functional success Functional Testing PASS

Commit Message

Ferruh Yigit June 24, 2021, 1:32 p.m. UTC
  'rte_kni_update_link()' updates virtual KNI interface link using kernel
sysfs interface.
If the requested link status is same as interface link status, do not
update the link status but return with success.

Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
---
Cc: Dan Gora <dg@adax.com>
---
 lib/kni/rte_kni.c   | 5 ++++-
 lib/kni/version.map | 1 +
 2 files changed, 5 insertions(+), 1 deletion(-)
  

Comments

Thomas Monjalon July 9, 2021, 3:19 p.m. UTC | #1
24/06/2021 15:32, Ferruh Yigit:
> 'rte_kni_update_link()' updates virtual KNI interface link using kernel
> sysfs interface.
> If the requested link status is same as interface link status, do not
> update the link status but return with success.
> 
> Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>

Applied, thanks.
  

Patch

diff --git a/lib/kni/rte_kni.c b/lib/kni/rte_kni.c
index 9dae6a8d7c0c..8ac4484272b0 100644
--- a/lib/kni/rte_kni.c
+++ b/lib/kni/rte_kni.c
@@ -810,6 +810,9 @@  rte_kni_update_link(struct rte_kni *kni, unsigned int linkup)
 	}
 	old_linkup = (old_carrier[0] == '1');
 
+	if (old_linkup == (int)linkup)
+		goto out;
+
 	new_carrier = linkup ? "1" : "0";
 	ret = write(fd, new_carrier, 1);
 	if (ret < 1) {
@@ -817,7 +820,7 @@  rte_kni_update_link(struct rte_kni *kni, unsigned int linkup)
 		close(fd);
 		return -1;
 	}
-
+out:
 	close(fd);
 	return old_linkup;
 }
diff --git a/lib/kni/version.map b/lib/kni/version.map
index a93da95f3671..bb810a7f2f38 100644
--- a/lib/kni/version.map
+++ b/lib/kni/version.map
@@ -19,5 +19,6 @@  DPDK_21 {
 EXPERIMENTAL {
 	global:
 
+	# updated in v21.08
 	rte_kni_update_link;
 };