net: microchip: sparx5: Add KUNIT tests for enabling/disabling chains
authorSteen Hegelund <steen.hegelund@microchip.com>
Fri, 27 Jan 2023 13:08:30 +0000 (14:08 +0100)
committerDavid S. Miller <davem@davemloft.net>
Mon, 30 Jan 2023 07:36:23 +0000 (07:36 +0000)
This enhances the KUNIT test of the VCAP API with tests of the chaining
functionality.

Signed-off-by: Steen Hegelund <steen.hegelund@microchip.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c

index a31cd08e3752330b41ba9ed04ee719d37db0ece9..b2753aac8ad213b2b91c494d964ba8e974411f3d 100644 (file)
@@ -2145,6 +2145,71 @@ static void vcap_api_filter_keylist_test(struct kunit *test)
        KUNIT_EXPECT_EQ(test, 26, idx);
 }
 
+static void vcap_api_rule_chain_path_test(struct kunit *test)
+{
+       struct vcap_admin admin1 = {
+               .vtype = VCAP_TYPE_IS0,
+               .vinst = 0,
+               .first_cid = 1000000,
+               .last_cid =  1199999,
+               .lookups = 6,
+               .lookups_per_instance = 2,
+       };
+       struct vcap_enabled_port eport3 = {
+               .ndev = &test_netdev,
+               .cookie = 0x100,
+               .src_cid = 0,
+               .dst_cid = 1000000,
+       };
+       struct vcap_enabled_port eport2 = {
+               .ndev = &test_netdev,
+               .cookie = 0x200,
+               .src_cid = 1000000,
+               .dst_cid = 1100000,
+       };
+       struct vcap_enabled_port eport1 = {
+               .ndev = &test_netdev,
+               .cookie = 0x300,
+               .src_cid = 1100000,
+               .dst_cid = 8000000,
+       };
+       bool ret;
+       int chain;
+
+       vcap_test_api_init(&admin1);
+       list_add_tail(&eport1.list, &admin1.enabled);
+       list_add_tail(&eport2.list, &admin1.enabled);
+       list_add_tail(&eport3.list, &admin1.enabled);
+
+       ret = vcap_path_exist(&test_vctrl, &test_netdev, 1000000);
+       KUNIT_EXPECT_EQ(test, true, ret);
+
+       ret = vcap_path_exist(&test_vctrl, &test_netdev, 1100000);
+       KUNIT_EXPECT_EQ(test, true, ret);
+
+       ret = vcap_path_exist(&test_vctrl, &test_netdev, 1200000);
+       KUNIT_EXPECT_EQ(test, false, ret);
+
+       chain = vcap_get_next_chain(&test_vctrl, &test_netdev, 0);
+       KUNIT_EXPECT_EQ(test, 1000000, chain);
+
+       chain = vcap_get_next_chain(&test_vctrl, &test_netdev, 1000000);
+       KUNIT_EXPECT_EQ(test, 1100000, chain);
+
+       chain = vcap_get_next_chain(&test_vctrl, &test_netdev, 1100000);
+       KUNIT_EXPECT_EQ(test, 8000000, chain);
+}
+
+static struct kunit_case vcap_api_rule_enable_test_cases[] = {
+       KUNIT_CASE(vcap_api_rule_chain_path_test),
+       {}
+};
+
+static struct kunit_suite vcap_api_rule_enable_test_suite = {
+       .name = "VCAP_API_Rule_Enable_Testsuite",
+       .test_cases = vcap_api_rule_enable_test_cases,
+};
+
 static struct kunit_suite vcap_api_rule_remove_test_suite = {
        .name = "VCAP_API_Rule_Remove_Testsuite",
        .test_cases = vcap_api_rule_remove_test_cases,
@@ -2235,6 +2300,7 @@ static struct kunit_suite vcap_api_encoding_test_suite = {
        .test_cases = vcap_api_encoding_test_cases,
 };
 
+kunit_test_suite(vcap_api_rule_enable_test_suite);
 kunit_test_suite(vcap_api_rule_remove_test_suite);
 kunit_test_suite(vcap_api_rule_insert_test_suite);
 kunit_test_suite(vcap_api_rule_counter_test_suite);