wifi: iwlwifi: tests: simplify devinfo_no_trans_cfg_dups()
authorJohannes Berg <johannes.berg@intel.com>
Sun, 4 May 2025 10:26:29 +0000 (13:26 +0300)
committerMiri Korenblit <miriam.rachel.korenblit@intel.com>
Wed, 7 May 2025 03:08:01 +0000 (06:08 +0300)
There's no need to build a list of individual configs
first and then compare them, we can just go through all
of them and compare if the pointers aren't the same.
The complexity (in terms of number of comparisons) is a
bit higher that way, but it's just a test and the code
complexity is much lower without that.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
Link: https://patch.msgid.link/20250504132447.85911c59d96a.I540f464229da3566d1726dfb61b46002fbb73bde@changeid
drivers/net/wireless/intel/iwlwifi/tests/devinfo.c

index bf15e8bdc4e840b3edcdb53f00b657937e44ce61..d5071fde20cfa39f9dd25ea1c933df900070d2e4 100644 (file)
@@ -157,43 +157,21 @@ static void devinfo_pci_ids(struct kunit *test)
 
 static void devinfo_no_trans_cfg_dups(struct kunit *test)
 {
-       /* allocate iwl_dev_info_table_size as upper bound */
-       const struct iwl_cfg_trans_params **cfgs;
-       int count = 0;
-       int p = 0;
-
-       for (int i = 0; iwl_hw_card_ids[i].vendor; i++)
-               count++;
-
-       cfgs = kunit_kcalloc(test, count, sizeof(*cfgs), GFP_KERNEL);
-       KUNIT_ASSERT_NOT_NULL(test, cfgs);
-
-       /* build a list of unique (by pointer) configs first */
        for (int i = 0; iwl_hw_card_ids[i].vendor; i++) {
-               struct iwl_cfg_trans_params *cfg;
-               bool found = false;
+               const struct iwl_cfg_trans_params *cfg_i =
+                       (void *)iwl_hw_card_ids[i].driver_data;
 
-               cfg = (void *)iwl_hw_card_ids[i].driver_data;
+               for (int j = 0; j < i; j++) {
+                       const struct iwl_cfg_trans_params *cfg_j =
+                               (void *)iwl_hw_card_ids[j].driver_data;
 
-               for (int j = 0; j < p; j++) {
-                       if (cfgs[j] == cfg) {
-                               found = true;
-                               break;
-                       }
-               }
-               if (!found) {
-                       cfgs[p] = cfg;
-                       p++;
-               }
-       }
+                       if (cfg_i == cfg_j)
+                               continue;
 
-       /* check that they're really all different */
-       for (int i = 0; i < p; i++) {
-               for (int j = 0; j < i; j++) {
-                       KUNIT_EXPECT_NE_MSG(test, memcmp(cfgs[i], cfgs[j],
-                                                        sizeof(*cfgs[i])), 0,
+                       KUNIT_EXPECT_NE_MSG(test, memcmp(cfg_j, cfg_i,
+                                                        sizeof(*cfg_i)), 0,
                                            "identical configs: %ps and %ps\n",
-                                           cfgs[i], cfgs[j]);
+                                           cfg_i, cfg_j);
                }
        }
 }