FILE
fwvid.h
File preview with syntax highlighting.
linux-6.19.14/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwvid.h
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.