Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/sys/contrib/dev/broadcom/brcm80211/brcmfmac/fwvid.h
178665 views
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
11
struct brcmf_pub;
12
struct brcmf_if;
13
14
struct 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 */
24
int brcmf_fwvid_register_vendor(enum brcmf_fwvendor fwvid, struct module *mod,
25
const struct brcmf_fwvid_ops *ops);
26
int brcmf_fwvid_unregister_vendor(enum brcmf_fwvendor fwvid, struct module *mod);
27
28
/* core driver functions */
29
int brcmf_fwvid_attach(struct brcmf_pub *drvr);
30
void brcmf_fwvid_detach(struct brcmf_pub *drvr);
31
const char *brcmf_fwvid_vendor_name(struct brcmf_pub *drvr);
32
33
static 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
43
static 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
54
static 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
62
static 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
72
static 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
80
static 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_ */
89
90