1 // SPDX-License-Identifier: GPL-2.0-only 1 // SPDX-License-Identifier: GPL-2.0-only 2 /* 2 /* 3 * KUnit fixture to have a (configurable) wiph 3 * KUnit fixture to have a (configurable) wiphy 4 * 4 * 5 * Copyright (C) 2023 Intel Corporation 5 * Copyright (C) 2023 Intel Corporation 6 */ 6 */ 7 #include <linux/ieee80211.h> 7 #include <linux/ieee80211.h> 8 #include <net/cfg80211.h> 8 #include <net/cfg80211.h> 9 #include <kunit/test.h> 9 #include <kunit/test.h> 10 #include <kunit/test-bug.h> 10 #include <kunit/test-bug.h> 11 #include "util.h" 11 #include "util.h" 12 12 13 int t_wiphy_init(struct kunit_resource *resour 13 int t_wiphy_init(struct kunit_resource *resource, void *ctx) 14 { 14 { 15 struct kunit *test = kunit_get_current 15 struct kunit *test = kunit_get_current_test(); 16 struct cfg80211_ops *ops; 16 struct cfg80211_ops *ops; 17 struct wiphy *wiphy; 17 struct wiphy *wiphy; 18 struct t_wiphy_priv *priv; 18 struct t_wiphy_priv *priv; 19 19 20 ops = kzalloc(sizeof(*ops), GFP_KERNEL 20 ops = kzalloc(sizeof(*ops), GFP_KERNEL); 21 KUNIT_ASSERT_NOT_NULL(test, ops); 21 KUNIT_ASSERT_NOT_NULL(test, ops); 22 22 23 wiphy = wiphy_new_nm(ops, sizeof(*priv 23 wiphy = wiphy_new_nm(ops, sizeof(*priv), "kunit"); 24 KUNIT_ASSERT_NOT_NULL(test, wiphy); 24 KUNIT_ASSERT_NOT_NULL(test, wiphy); 25 25 26 priv = wiphy_priv(wiphy); 26 priv = wiphy_priv(wiphy); 27 priv->ctx = ctx; 27 priv->ctx = ctx; 28 priv->ops = ops; 28 priv->ops = ops; 29 29 30 /* Initialize channels, feel free to a 30 /* Initialize channels, feel free to add more here channels/bands */ 31 memcpy(priv->channels_2ghz, channels_2 31 memcpy(priv->channels_2ghz, channels_2ghz, sizeof(channels_2ghz)); 32 wiphy->bands[NL80211_BAND_2GHZ] = &pri 32 wiphy->bands[NL80211_BAND_2GHZ] = &priv->band_2ghz; 33 priv->band_2ghz.channels = priv->chann 33 priv->band_2ghz.channels = priv->channels_2ghz; 34 priv->band_2ghz.n_channels = ARRAY_SIZ 34 priv->band_2ghz.n_channels = ARRAY_SIZE(channels_2ghz); 35 35 36 resource->data = wiphy; 36 resource->data = wiphy; 37 resource->name = "wiphy"; 37 resource->name = "wiphy"; 38 38 39 return 0; 39 return 0; 40 } 40 } 41 41 42 void t_wiphy_exit(struct kunit_resource *resou 42 void t_wiphy_exit(struct kunit_resource *resource) 43 { 43 { 44 struct t_wiphy_priv *priv; 44 struct t_wiphy_priv *priv; 45 struct cfg80211_ops *ops; 45 struct cfg80211_ops *ops; 46 46 47 priv = wiphy_priv(resource->data); 47 priv = wiphy_priv(resource->data); 48 ops = priv->ops; 48 ops = priv->ops; 49 49 50 /* Should we ensure anything about the 50 /* Should we ensure anything about the state here? 51 * e.g. full destruction or no calls t 51 * e.g. full destruction or no calls to any ops on destruction? 52 */ 52 */ 53 53 54 wiphy_free(resource->data); 54 wiphy_free(resource->data); 55 kfree(ops); 55 kfree(ops); 56 } 56 } 57 57
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.