Add tests for PCI PF and SF port add, configure and delete using user
specified port index and sfumber; and also using auto generated port
index.

Signed-off-by: Parav Pandit <pa...@nvidia.com>
---
 .../drivers/net/netdevsim/devlink.sh          | 72 ++++++++++++++++++-
 1 file changed, 71 insertions(+), 1 deletion(-)

diff --git a/tools/testing/selftests/drivers/net/netdevsim/devlink.sh 
b/tools/testing/selftests/drivers/net/netdevsim/devlink.sh
index 40909c254365..ba349909a37e 100755
--- a/tools/testing/selftests/drivers/net/netdevsim/devlink.sh
+++ b/tools/testing/selftests/drivers/net/netdevsim/devlink.sh
@@ -5,7 +5,7 @@ lib_dir=$(dirname $0)/../../../net/forwarding
 
 ALL_TESTS="fw_flash_test params_test regions_test reload_test \
           netns_reload_test resource_test dev_info_test \
-          empty_reporter_test dummy_reporter_test"
+          empty_reporter_test dummy_reporter_test devlink_port_add_test"
 NUM_NETIFS=0
 source $lib_dir/lib.sh
 
@@ -507,6 +507,76 @@ dummy_reporter_test()
        log_test "dummy reporter test"
 }
 
+function_state_get()
+{
+       local name=$1
+
+       cmd_jq "devlink port show $DL_HANDLE/$USR_SF_PORT_INDEX -j" \
+               " .[][].function.$1"
+}
+
+devlink_port_add_test()
+{
+       RET=0
+       USR_PF_PORT_INDEX=600
+       USR_PFNUM_A=2
+       USR_PFNUM_B=3
+       USR_SF_PORT_INDEX=601
+       USR_SFNUM_A=44
+       USR_SFNUM_B=55
+
+       devlink port add $DL_HANDLE flavour pcipf pfnum $USR_PFNUM_A
+       check_err $? "Failed PF port addition"
+
+       devlink port show
+       check_err $? "Failed PF port show"
+
+       devlink port add $DL_HANDLE flavour pcisf pfnum $USR_PFNUM_A
+       check_err $? "Failed SF port addition"
+
+       devlink port add $DL_HANDLE flavour pcisf pfnum $USR_PFNUM_A \
+                       sfnum $USR_SFNUM_A
+       check_err $? "Failed SF port addition"
+
+       devlink port add $DL_HANDLE flavour pcipf pfnum $USR_PFNUM_B
+       check_err $? "Failed second PF port addition"
+
+       devlink port add $DL_HANDLE/$USR_SF_PORT_INDEX flavour pcisf \
+                       pfnum $USR_PFNUM_B sfnum $USR_SFNUM_B
+       check_err $? "Failed SF port addition"
+
+       devlink port show
+       check_err $? "Failed PF port show"
+
+       state=$(function_state_get "state")
+       check_err $? "Failed to get function state"
+       [ "$state" == "inactive" ]
+       check_err $? "Unexpected function state $state"
+
+       state=$(function_state_get "opstate")
+       check_err $? "Failed to get operational state"
+       [ "$state" == "detached" ]
+       check_err $? "Unexpected function opstate $opstate"
+
+       devlink port function set $DL_HANDLE/$USR_SF_PORT_INDEX state active
+       check_err $? "Failed to set state"
+
+       state=$(function_state_get "state")
+       check_err $? "Failed to get function state"
+       [ "$state" == "active" ]
+       check_err $? "Unexpected function state $state"
+
+       state=$(function_state_get "opstate")
+       check_err $? "Failed to get operational state"
+       [ "$state" == "attached" ]
+       check_err $? "Unexpected function opstate $opstate"
+
+       devlink port del $DL_HANDLE/$USR_SF_PORT_INDEX
+       check_err $? "Failed SF port deletion"
+
+       log_test "port_add test"
+}
+
 setup_prepare()
 {
        modprobe netdevsim
-- 
2.26.2

Reply via email to