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