File Index
Files and directories
Sign in
FILE

fwvid.h

File preview with syntax highlighting.

linux-6.19.14/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwvid.h C
 1/* SPDX-License-Identifier: ISC */
 2/*
 3 * Copyright (c) 2022 Broadcom Corporation
 4 */
 5#ifndef FWVID_H_
 6#define FWVID_H_
 7
 8#include "firmware.h"
 9#include "cfg80211.h"
10
11struct brcmf_pub;
12struct brcmf_if;
13
14struct brcmf_fwvid_ops {
15	void (*feat_attach)(struct brcmf_if *ifp);
16	int (*set_sae_password)(struct brcmf_if *ifp, struct cfg80211_crypto_settings *crypto);
17	int (*alloc_fweh_info)(struct brcmf_pub *drvr);
18	int (*activate_events)(struct brcmf_if *ifp);
19	void (*get_cfg80211_ops)(struct brcmf_pub *drvr);
20	void (*register_event_handlers)(struct brcmf_pub *drvr);
21};
22
23/* exported functions */
24int brcmf_fwvid_register_vendor(enum brcmf_fwvendor fwvid, struct module *mod,
25				const struct brcmf_fwvid_ops *ops);
26int brcmf_fwvid_unregister_vendor(enum brcmf_fwvendor fwvid, struct module *mod);
27
28/* core driver functions */
29int brcmf_fwvid_attach(struct brcmf_pub *drvr);
30void brcmf_fwvid_detach(struct brcmf_pub *drvr);
31const char *brcmf_fwvid_vendor_name(struct brcmf_pub *drvr);
32
33static inline void brcmf_fwvid_feat_attach(struct brcmf_if *ifp)
34{
35	const struct brcmf_fwvid_ops *vops = ifp->drvr->vops;
36
37	if (!vops->feat_attach)
38		return;
39
40	vops->feat_attach(ifp);
41}
42
43static inline int brcmf_fwvid_set_sae_password(struct brcmf_if *ifp,
44					       struct cfg80211_crypto_settings *crypto)
45{
46	const struct brcmf_fwvid_ops *vops = ifp->drvr->vops;
47
48	if (!vops || !vops->set_sae_password)
49		return -EOPNOTSUPP;
50
51	return vops->set_sae_password(ifp, crypto);
52}
53
54static inline int brcmf_fwvid_alloc_fweh_info(struct brcmf_pub *drvr)
55{
56	if (!drvr->vops)
57		return -EIO;
58
59	return drvr->vops->alloc_fweh_info(drvr);
60}
61
62static inline int brcmf_fwvid_activate_events(struct brcmf_if *ifp)
63{
64	const struct brcmf_fwvid_ops *vops = ifp->drvr->vops;
65
66	if (!vops || !vops->activate_events)
67		return -EOPNOTSUPP;
68
69	return vops->activate_events(ifp);
70}
71
72static inline void brcmf_fwvid_get_cfg80211_ops(struct brcmf_pub *drvr)
73{
74	if (!drvr->vops || !drvr->vops->get_cfg80211_ops)
75		return;
76
77	drvr->vops->get_cfg80211_ops(drvr);
78}
79
80static inline void brcmf_fwvid_register_event_handlers(struct brcmf_pub *drvr)
81{
82	if (!drvr->vops || !drvr->vops->register_event_handlers)
83		return;
84
85	drvr->vops->register_event_handlers(drvr);
86}
87
88#endif /* FWVID_H_ */
~/ Read-only file preview.