mirror of
https://github.com/nxp-imx/linux-imx.git
synced 2025-07-07 18:05:21 +02:00
wifi: brcmfmac: export firmware interface functions
[ Upstream commit31343230ab
] With multi-vendor support the vendor-specific module may need to use the firmware interface functions so export them using the macro BRCMF_EXPORT_SYMBOL_GPL() which exports them to driver namespace. Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com> Signed-off-by: Kalle Valo <kvalo@kernel.org> Link: https://msgid.link/20240103095704.135651-2-arend.vanspriel@broadcom.com Stable-dep-of:c6002b6c05
("wifi: brcmfmac: introducing fwil query functions") Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
9349283fc6
commit
c3cfcf51b4
|
@ -3067,7 +3067,7 @@ brcmf_cfg80211_get_station_ibss(struct brcmf_if *ifp,
|
||||||
struct brcmf_scb_val_le scbval;
|
struct brcmf_scb_val_le scbval;
|
||||||
struct brcmf_pktcnt_le pktcnt;
|
struct brcmf_pktcnt_le pktcnt;
|
||||||
s32 err;
|
s32 err;
|
||||||
u32 rate;
|
u32 rate = 0;
|
||||||
u32 rssi;
|
u32 rssi;
|
||||||
|
|
||||||
/* Get the current tx rate */
|
/* Get the current tx rate */
|
||||||
|
@ -7269,7 +7269,7 @@ static int brcmf_setup_wiphybands(struct brcmf_cfg80211_info *cfg)
|
||||||
u32 nmode = 0;
|
u32 nmode = 0;
|
||||||
u32 vhtmode = 0;
|
u32 vhtmode = 0;
|
||||||
u32 bw_cap[2] = { WLC_BW_20MHZ_BIT, WLC_BW_20MHZ_BIT };
|
u32 bw_cap[2] = { WLC_BW_20MHZ_BIT, WLC_BW_20MHZ_BIT };
|
||||||
u32 rxchain;
|
u32 rxchain = 0;
|
||||||
u32 nchain;
|
u32 nchain;
|
||||||
int err;
|
int err;
|
||||||
s32 i;
|
s32 i;
|
||||||
|
|
|
@ -691,7 +691,7 @@ static int brcmf_net_mon_open(struct net_device *ndev)
|
||||||
{
|
{
|
||||||
struct brcmf_if *ifp = netdev_priv(ndev);
|
struct brcmf_if *ifp = netdev_priv(ndev);
|
||||||
struct brcmf_pub *drvr = ifp->drvr;
|
struct brcmf_pub *drvr = ifp->drvr;
|
||||||
u32 monitor;
|
u32 monitor = 0;
|
||||||
int err;
|
int err;
|
||||||
|
|
||||||
brcmf_dbg(TRACE, "Enter\n");
|
brcmf_dbg(TRACE, "Enter\n");
|
||||||
|
|
|
@ -184,7 +184,7 @@ static void brcmf_feat_wlc_version_overrides(struct brcmf_pub *drv)
|
||||||
static void brcmf_feat_iovar_int_get(struct brcmf_if *ifp,
|
static void brcmf_feat_iovar_int_get(struct brcmf_if *ifp,
|
||||||
enum brcmf_feat_id id, char *name)
|
enum brcmf_feat_id id, char *name)
|
||||||
{
|
{
|
||||||
u32 data;
|
u32 data = 0;
|
||||||
int err;
|
int err;
|
||||||
|
|
||||||
/* we need to know firmware error */
|
/* we need to know firmware error */
|
||||||
|
|
|
@ -142,6 +142,7 @@ brcmf_fil_cmd_data_set(struct brcmf_if *ifp, u32 cmd, void *data, u32 len)
|
||||||
|
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
BRCMF_EXPORT_SYMBOL_GPL(brcmf_fil_cmd_data_set);
|
||||||
|
|
||||||
s32
|
s32
|
||||||
brcmf_fil_cmd_data_get(struct brcmf_if *ifp, u32 cmd, void *data, u32 len)
|
brcmf_fil_cmd_data_get(struct brcmf_if *ifp, u32 cmd, void *data, u32 len)
|
||||||
|
@ -160,36 +161,7 @@ brcmf_fil_cmd_data_get(struct brcmf_if *ifp, u32 cmd, void *data, u32 len)
|
||||||
|
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
BRCMF_EXPORT_SYMBOL_GPL(brcmf_fil_cmd_data_get);
|
||||||
|
|
||||||
s32
|
|
||||||
brcmf_fil_cmd_int_set(struct brcmf_if *ifp, u32 cmd, u32 data)
|
|
||||||
{
|
|
||||||
s32 err;
|
|
||||||
__le32 data_le = cpu_to_le32(data);
|
|
||||||
|
|
||||||
mutex_lock(&ifp->drvr->proto_block);
|
|
||||||
brcmf_dbg(FIL, "ifidx=%d, cmd=%d, value=%d\n", ifp->ifidx, cmd, data);
|
|
||||||
err = brcmf_fil_cmd_data(ifp, cmd, &data_le, sizeof(data_le), true);
|
|
||||||
mutex_unlock(&ifp->drvr->proto_block);
|
|
||||||
|
|
||||||
return err;
|
|
||||||
}
|
|
||||||
|
|
||||||
s32
|
|
||||||
brcmf_fil_cmd_int_get(struct brcmf_if *ifp, u32 cmd, u32 *data)
|
|
||||||
{
|
|
||||||
s32 err;
|
|
||||||
__le32 data_le = cpu_to_le32(*data);
|
|
||||||
|
|
||||||
mutex_lock(&ifp->drvr->proto_block);
|
|
||||||
err = brcmf_fil_cmd_data(ifp, cmd, &data_le, sizeof(data_le), false);
|
|
||||||
mutex_unlock(&ifp->drvr->proto_block);
|
|
||||||
*data = le32_to_cpu(data_le);
|
|
||||||
brcmf_dbg(FIL, "ifidx=%d, cmd=%d, value=%d\n", ifp->ifidx, cmd, *data);
|
|
||||||
|
|
||||||
return err;
|
|
||||||
}
|
|
||||||
|
|
||||||
static u32
|
static u32
|
||||||
brcmf_create_iovar(const char *name, const char *data, u32 datalen,
|
brcmf_create_iovar(const char *name, const char *data, u32 datalen,
|
||||||
|
@ -271,26 +243,7 @@ brcmf_fil_iovar_data_get(struct brcmf_if *ifp, const char *name, void *data,
|
||||||
mutex_unlock(&drvr->proto_block);
|
mutex_unlock(&drvr->proto_block);
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
BRCMF_EXPORT_SYMBOL_GPL(brcmf_fil_iovar_data_get);
|
||||||
s32
|
|
||||||
brcmf_fil_iovar_int_set(struct brcmf_if *ifp, const char *name, u32 data)
|
|
||||||
{
|
|
||||||
__le32 data_le = cpu_to_le32(data);
|
|
||||||
|
|
||||||
return brcmf_fil_iovar_data_set(ifp, name, &data_le, sizeof(data_le));
|
|
||||||
}
|
|
||||||
|
|
||||||
s32
|
|
||||||
brcmf_fil_iovar_int_get(struct brcmf_if *ifp, const char *name, u32 *data)
|
|
||||||
{
|
|
||||||
__le32 data_le = cpu_to_le32(*data);
|
|
||||||
s32 err;
|
|
||||||
|
|
||||||
err = brcmf_fil_iovar_data_get(ifp, name, &data_le, sizeof(data_le));
|
|
||||||
if (err == 0)
|
|
||||||
*data = le32_to_cpu(data_le);
|
|
||||||
return err;
|
|
||||||
}
|
|
||||||
|
|
||||||
static u32
|
static u32
|
||||||
brcmf_create_bsscfg(s32 bsscfgidx, const char *name, char *data, u32 datalen,
|
brcmf_create_bsscfg(s32 bsscfgidx, const char *name, char *data, u32 datalen,
|
||||||
|
@ -365,6 +318,7 @@ brcmf_fil_bsscfg_data_set(struct brcmf_if *ifp, const char *name,
|
||||||
mutex_unlock(&drvr->proto_block);
|
mutex_unlock(&drvr->proto_block);
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
BRCMF_EXPORT_SYMBOL_GPL(brcmf_fil_bsscfg_data_set);
|
||||||
|
|
||||||
s32
|
s32
|
||||||
brcmf_fil_bsscfg_data_get(struct brcmf_if *ifp, const char *name,
|
brcmf_fil_bsscfg_data_get(struct brcmf_if *ifp, const char *name,
|
||||||
|
@ -395,28 +349,7 @@ brcmf_fil_bsscfg_data_get(struct brcmf_if *ifp, const char *name,
|
||||||
mutex_unlock(&drvr->proto_block);
|
mutex_unlock(&drvr->proto_block);
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
BRCMF_EXPORT_SYMBOL_GPL(brcmf_fil_bsscfg_data_get);
|
||||||
s32
|
|
||||||
brcmf_fil_bsscfg_int_set(struct brcmf_if *ifp, const char *name, u32 data)
|
|
||||||
{
|
|
||||||
__le32 data_le = cpu_to_le32(data);
|
|
||||||
|
|
||||||
return brcmf_fil_bsscfg_data_set(ifp, name, &data_le,
|
|
||||||
sizeof(data_le));
|
|
||||||
}
|
|
||||||
|
|
||||||
s32
|
|
||||||
brcmf_fil_bsscfg_int_get(struct brcmf_if *ifp, const char *name, u32 *data)
|
|
||||||
{
|
|
||||||
__le32 data_le = cpu_to_le32(*data);
|
|
||||||
s32 err;
|
|
||||||
|
|
||||||
err = brcmf_fil_bsscfg_data_get(ifp, name, &data_le,
|
|
||||||
sizeof(data_le));
|
|
||||||
if (err == 0)
|
|
||||||
*data = le32_to_cpu(data_le);
|
|
||||||
return err;
|
|
||||||
}
|
|
||||||
|
|
||||||
static u32 brcmf_create_xtlv(const char *name, u16 id, char *data, u32 len,
|
static u32 brcmf_create_xtlv(const char *name, u16 id, char *data, u32 len,
|
||||||
char *buf, u32 buflen)
|
char *buf, u32 buflen)
|
||||||
|
@ -466,6 +399,7 @@ s32 brcmf_fil_xtlv_data_set(struct brcmf_if *ifp, const char *name, u16 id,
|
||||||
mutex_unlock(&drvr->proto_block);
|
mutex_unlock(&drvr->proto_block);
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
BRCMF_EXPORT_SYMBOL_GPL(brcmf_fil_xtlv_data_set);
|
||||||
|
|
||||||
s32 brcmf_fil_xtlv_data_get(struct brcmf_if *ifp, const char *name, u16 id,
|
s32 brcmf_fil_xtlv_data_get(struct brcmf_if *ifp, const char *name, u16 id,
|
||||||
void *data, u32 len)
|
void *data, u32 len)
|
||||||
|
@ -495,39 +429,4 @@ s32 brcmf_fil_xtlv_data_get(struct brcmf_if *ifp, const char *name, u16 id,
|
||||||
mutex_unlock(&drvr->proto_block);
|
mutex_unlock(&drvr->proto_block);
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
BRCMF_EXPORT_SYMBOL_GPL(brcmf_fil_xtlv_data_get);
|
||||||
s32 brcmf_fil_xtlv_int_set(struct brcmf_if *ifp, const char *name, u16 id, u32 data)
|
|
||||||
{
|
|
||||||
__le32 data_le = cpu_to_le32(data);
|
|
||||||
|
|
||||||
return brcmf_fil_xtlv_data_set(ifp, name, id, &data_le,
|
|
||||||
sizeof(data_le));
|
|
||||||
}
|
|
||||||
|
|
||||||
s32 brcmf_fil_xtlv_int_get(struct brcmf_if *ifp, const char *name, u16 id, u32 *data)
|
|
||||||
{
|
|
||||||
__le32 data_le = cpu_to_le32(*data);
|
|
||||||
s32 err;
|
|
||||||
|
|
||||||
err = brcmf_fil_xtlv_data_get(ifp, name, id, &data_le, sizeof(data_le));
|
|
||||||
if (err == 0)
|
|
||||||
*data = le32_to_cpu(data_le);
|
|
||||||
return err;
|
|
||||||
}
|
|
||||||
|
|
||||||
s32 brcmf_fil_xtlv_int8_get(struct brcmf_if *ifp, const char *name, u16 id, u8 *data)
|
|
||||||
{
|
|
||||||
return brcmf_fil_xtlv_data_get(ifp, name, id, data, sizeof(*data));
|
|
||||||
}
|
|
||||||
|
|
||||||
s32 brcmf_fil_xtlv_int16_get(struct brcmf_if *ifp, const char *name, u16 id, u16 *data)
|
|
||||||
{
|
|
||||||
__le16 data_le = cpu_to_le16(*data);
|
|
||||||
s32 err;
|
|
||||||
|
|
||||||
err = brcmf_fil_xtlv_data_get(ifp, name, id, &data_le, sizeof(data_le));
|
|
||||||
if (err == 0)
|
|
||||||
*data = le16_to_cpu(data_le);
|
|
||||||
return err;
|
|
||||||
}
|
|
||||||
|
|
|
@ -81,29 +81,122 @@
|
||||||
|
|
||||||
s32 brcmf_fil_cmd_data_set(struct brcmf_if *ifp, u32 cmd, void *data, u32 len);
|
s32 brcmf_fil_cmd_data_set(struct brcmf_if *ifp, u32 cmd, void *data, u32 len);
|
||||||
s32 brcmf_fil_cmd_data_get(struct brcmf_if *ifp, u32 cmd, void *data, u32 len);
|
s32 brcmf_fil_cmd_data_get(struct brcmf_if *ifp, u32 cmd, void *data, u32 len);
|
||||||
s32 brcmf_fil_cmd_int_set(struct brcmf_if *ifp, u32 cmd, u32 data);
|
static inline
|
||||||
s32 brcmf_fil_cmd_int_get(struct brcmf_if *ifp, u32 cmd, u32 *data);
|
s32 brcmf_fil_cmd_int_set(struct brcmf_if *ifp, u32 cmd, u32 data)
|
||||||
|
{
|
||||||
|
s32 err;
|
||||||
|
__le32 data_le = cpu_to_le32(data);
|
||||||
|
|
||||||
s32 brcmf_fil_iovar_data_set(struct brcmf_if *ifp, const char *name, const void *data,
|
brcmf_dbg(FIL, "ifidx=%d, cmd=%d, value=%d\n", ifp->ifidx, cmd, data);
|
||||||
u32 len);
|
err = brcmf_fil_cmd_data_set(ifp, cmd, &data_le, sizeof(data_le));
|
||||||
|
|
||||||
|
return err;
|
||||||
|
}
|
||||||
|
static inline
|
||||||
|
s32 brcmf_fil_cmd_int_get(struct brcmf_if *ifp, u32 cmd, u32 *data)
|
||||||
|
{
|
||||||
|
s32 err;
|
||||||
|
__le32 data_le = cpu_to_le32(*data);
|
||||||
|
|
||||||
|
err = brcmf_fil_cmd_data_get(ifp, cmd, &data_le, sizeof(data_le));
|
||||||
|
if (err == 0)
|
||||||
|
*data = le32_to_cpu(data_le);
|
||||||
|
brcmf_dbg(FIL, "ifidx=%d, cmd=%d, value=%d\n", ifp->ifidx, cmd, *data);
|
||||||
|
|
||||||
|
return err;
|
||||||
|
}
|
||||||
|
|
||||||
|
s32 brcmf_fil_iovar_data_set(struct brcmf_if *ifp, const char *name,
|
||||||
|
const void *data, u32 len);
|
||||||
s32 brcmf_fil_iovar_data_get(struct brcmf_if *ifp, const char *name, void *data,
|
s32 brcmf_fil_iovar_data_get(struct brcmf_if *ifp, const char *name, void *data,
|
||||||
u32 len);
|
u32 len);
|
||||||
s32 brcmf_fil_iovar_int_set(struct brcmf_if *ifp, const char *name, u32 data);
|
static inline
|
||||||
s32 brcmf_fil_iovar_int_get(struct brcmf_if *ifp, const char *name, u32 *data);
|
s32 brcmf_fil_iovar_int_set(struct brcmf_if *ifp, const char *name, u32 data)
|
||||||
|
{
|
||||||
|
__le32 data_le = cpu_to_le32(data);
|
||||||
|
|
||||||
|
return brcmf_fil_iovar_data_set(ifp, name, &data_le, sizeof(data_le));
|
||||||
|
}
|
||||||
|
static inline
|
||||||
|
s32 brcmf_fil_iovar_int_get(struct brcmf_if *ifp, const char *name, u32 *data)
|
||||||
|
{
|
||||||
|
__le32 data_le = cpu_to_le32(*data);
|
||||||
|
s32 err;
|
||||||
|
|
||||||
|
err = brcmf_fil_iovar_data_get(ifp, name, &data_le, sizeof(data_le));
|
||||||
|
if (err == 0)
|
||||||
|
*data = le32_to_cpu(data_le);
|
||||||
|
return err;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
s32 brcmf_fil_bsscfg_data_set(struct brcmf_if *ifp, const char *name,
|
||||||
|
void *data, u32 len);
|
||||||
|
s32 brcmf_fil_bsscfg_data_get(struct brcmf_if *ifp, const char *name,
|
||||||
|
void *data, u32 len);
|
||||||
|
static inline
|
||||||
|
s32 brcmf_fil_bsscfg_int_set(struct brcmf_if *ifp, const char *name, u32 data)
|
||||||
|
{
|
||||||
|
__le32 data_le = cpu_to_le32(data);
|
||||||
|
|
||||||
|
return brcmf_fil_bsscfg_data_set(ifp, name, &data_le,
|
||||||
|
sizeof(data_le));
|
||||||
|
}
|
||||||
|
static inline
|
||||||
|
s32 brcmf_fil_bsscfg_int_get(struct brcmf_if *ifp, const char *name, u32 *data)
|
||||||
|
{
|
||||||
|
__le32 data_le = cpu_to_le32(*data);
|
||||||
|
s32 err;
|
||||||
|
|
||||||
|
err = brcmf_fil_bsscfg_data_get(ifp, name, &data_le,
|
||||||
|
sizeof(data_le));
|
||||||
|
if (err == 0)
|
||||||
|
*data = le32_to_cpu(data_le);
|
||||||
|
return err;
|
||||||
|
}
|
||||||
|
|
||||||
s32 brcmf_fil_bsscfg_data_set(struct brcmf_if *ifp, const char *name, void *data,
|
|
||||||
u32 len);
|
|
||||||
s32 brcmf_fil_bsscfg_data_get(struct brcmf_if *ifp, const char *name, void *data,
|
|
||||||
u32 len);
|
|
||||||
s32 brcmf_fil_bsscfg_int_set(struct brcmf_if *ifp, const char *name, u32 data);
|
|
||||||
s32 brcmf_fil_bsscfg_int_get(struct brcmf_if *ifp, const char *name, u32 *data);
|
|
||||||
s32 brcmf_fil_xtlv_data_set(struct brcmf_if *ifp, const char *name, u16 id,
|
s32 brcmf_fil_xtlv_data_set(struct brcmf_if *ifp, const char *name, u16 id,
|
||||||
void *data, u32 len);
|
void *data, u32 len);
|
||||||
s32 brcmf_fil_xtlv_data_get(struct brcmf_if *ifp, const char *name, u16 id,
|
s32 brcmf_fil_xtlv_data_get(struct brcmf_if *ifp, const char *name, u16 id,
|
||||||
void *data, u32 len);
|
void *data, u32 len);
|
||||||
s32 brcmf_fil_xtlv_int_set(struct brcmf_if *ifp, const char *name, u16 id, u32 data);
|
static inline
|
||||||
s32 brcmf_fil_xtlv_int_get(struct brcmf_if *ifp, const char *name, u16 id, u32 *data);
|
s32 brcmf_fil_xtlv_int_set(struct brcmf_if *ifp, const char *name, u16 id,
|
||||||
s32 brcmf_fil_xtlv_int8_get(struct brcmf_if *ifp, const char *name, u16 id, u8 *data);
|
u32 data)
|
||||||
s32 brcmf_fil_xtlv_int16_get(struct brcmf_if *ifp, const char *name, u16 id, u16 *data);
|
{
|
||||||
|
__le32 data_le = cpu_to_le32(data);
|
||||||
|
|
||||||
|
return brcmf_fil_xtlv_data_set(ifp, name, id, &data_le,
|
||||||
|
sizeof(data_le));
|
||||||
|
}
|
||||||
|
static inline
|
||||||
|
s32 brcmf_fil_xtlv_int_get(struct brcmf_if *ifp, const char *name, u16 id,
|
||||||
|
u32 *data)
|
||||||
|
{
|
||||||
|
__le32 data_le = cpu_to_le32(*data);
|
||||||
|
s32 err;
|
||||||
|
|
||||||
|
err = brcmf_fil_xtlv_data_get(ifp, name, id, &data_le, sizeof(data_le));
|
||||||
|
if (err == 0)
|
||||||
|
*data = le32_to_cpu(data_le);
|
||||||
|
return err;
|
||||||
|
}
|
||||||
|
static inline
|
||||||
|
s32 brcmf_fil_xtlv_int8_get(struct brcmf_if *ifp, const char *name, u16 id,
|
||||||
|
u8 *data)
|
||||||
|
{
|
||||||
|
return brcmf_fil_xtlv_data_get(ifp, name, id, data, sizeof(*data));
|
||||||
|
}
|
||||||
|
static inline
|
||||||
|
s32 brcmf_fil_xtlv_int16_get(struct brcmf_if *ifp, const char *name, u16 id,
|
||||||
|
u16 *data)
|
||||||
|
{
|
||||||
|
__le16 data_le = cpu_to_le16(*data);
|
||||||
|
s32 err;
|
||||||
|
|
||||||
|
err = brcmf_fil_xtlv_data_get(ifp, name, id, &data_le, sizeof(data_le));
|
||||||
|
if (err == 0)
|
||||||
|
*data = le16_to_cpu(data_le);
|
||||||
|
return err;
|
||||||
|
}
|
||||||
|
|
||||||
#endif /* _fwil_h_ */
|
#endif /* _fwil_h_ */
|
||||||
|
|
Loading…
Reference in New Issue
Block a user