Path: blob/main/sys/contrib/dev/broadcom/brcm80211/brcmfmac/fwil.h
178665 views
// SPDX-License-Identifier: ISC1/*2* Copyright (c) 2012 Broadcom Corporation3*/45#ifndef _fwil_h_6#define _fwil_h_78#include "debug.h"910/*******************************************************************************11* Dongle command codes that are interpreted by firmware12******************************************************************************/13#define BRCMF_C_GET_VERSION 114#define BRCMF_C_UP 215#define BRCMF_C_DOWN 316#define BRCMF_C_SET_PROMISC 1017#define BRCMF_C_GET_RATE 1218#define BRCMF_C_GET_INFRA 1919#define BRCMF_C_SET_INFRA 2020#define BRCMF_C_GET_AUTH 2121#define BRCMF_C_SET_AUTH 2222#define BRCMF_C_GET_BSSID 2323#define BRCMF_C_GET_SSID 2524#define BRCMF_C_SET_SSID 2625#define BRCMF_C_TERMINATED 2826#define BRCMF_C_GET_CHANNEL 2927#define BRCMF_C_SET_CHANNEL 3028#define BRCMF_C_GET_SRL 3129#define BRCMF_C_SET_SRL 3230#define BRCMF_C_GET_LRL 3331#define BRCMF_C_SET_LRL 3432#define BRCMF_C_GET_RADIO 3733#define BRCMF_C_SET_RADIO 3834#define BRCMF_C_GET_PHYTYPE 3935#define BRCMF_C_SET_KEY 4536#define BRCMF_C_GET_REGULATORY 4637#define BRCMF_C_SET_REGULATORY 4738#define BRCMF_C_SET_PASSIVE_SCAN 4939#define BRCMF_C_SCAN 5040#define BRCMF_C_SCAN_RESULTS 5141#define BRCMF_C_DISASSOC 5242#define BRCMF_C_REASSOC 5343#define BRCMF_C_SET_ROAM_TRIGGER 5544#define BRCMF_C_SET_ROAM_DELTA 5745#define BRCMF_C_GET_BCNPRD 7546#define BRCMF_C_SET_BCNPRD 7647#define BRCMF_C_GET_DTIMPRD 7748#define BRCMF_C_SET_DTIMPRD 7849#define BRCMF_C_SET_COUNTRY 8450#define BRCMF_C_GET_PM 8551#define BRCMF_C_SET_PM 8652#define BRCMF_C_GET_REVINFO 9853#define BRCMF_C_GET_MONITOR 10754#define BRCMF_C_SET_MONITOR 10855#define BRCMF_C_GET_CURR_RATESET 11456#define BRCMF_C_GET_AP 11757#define BRCMF_C_SET_AP 11858#define BRCMF_C_SET_SCB_AUTHORIZE 12159#define BRCMF_C_SET_SCB_DEAUTHORIZE 12260#define BRCMF_C_GET_RSSI 12761#define BRCMF_C_GET_WSEC 13362#define BRCMF_C_SET_WSEC 13463#define BRCMF_C_GET_PHY_NOISE 13564#define BRCMF_C_GET_BSS_INFO 13665#define BRCMF_C_GET_GET_PKTCNTS 13766#define BRCMF_C_GET_BANDLIST 14067#define BRCMF_C_SET_SCB_TIMEOUT 15868#define BRCMF_C_GET_ASSOCLIST 15969#define BRCMF_C_GET_PHYLIST 18070#define BRCMF_C_SET_SCAN_CHANNEL_TIME 18571#define BRCMF_C_SET_SCAN_UNASSOC_TIME 18772#define BRCMF_C_SCB_DEAUTHENTICATE_FOR_REASON 20173#define BRCMF_C_SET_ASSOC_PREFER 20574#define BRCMF_C_GET_VALID_CHANNELS 21775#define BRCMF_C_SET_FAKEFRAG 21976#define BRCMF_C_GET_KEY_PRIMARY 23577#define BRCMF_C_SET_KEY_PRIMARY 23678#define BRCMF_C_SET_SCAN_PASSIVE_TIME 25879#define BRCMF_C_GET_VAR 26280#define BRCMF_C_SET_VAR 26381#define BRCMF_C_SET_WSEC_PMK 2688283s32 brcmf_fil_cmd_data_set(struct brcmf_if *ifp, u32 cmd, void *data, u32 len);84s32 brcmf_fil_cmd_data_get(struct brcmf_if *ifp, u32 cmd, void *data, u32 len);85static inline86s32 brcmf_fil_cmd_int_set(struct brcmf_if *ifp, u32 cmd, u32 data)87{88s32 err;89__le32 data_le = cpu_to_le32(data);9091brcmf_dbg(FIL, "ifidx=%d, cmd=%d, value=%d\n", ifp->ifidx, cmd, data);92err = brcmf_fil_cmd_data_set(ifp, cmd, &data_le, sizeof(data_le));9394return err;95}96static inline97s32 brcmf_fil_cmd_int_get(struct brcmf_if *ifp, u32 cmd, u32 *data)98{99s32 err;100101err = brcmf_fil_cmd_data_get(ifp, cmd, data, sizeof(*data));102if (err == 0)103*data = le32_to_cpu(*(__le32 *)data);104brcmf_dbg(FIL, "ifidx=%d, cmd=%d, value=%d\n", ifp->ifidx, cmd, *data);105106return err;107}108static inline109s32 brcmf_fil_cmd_int_query(struct brcmf_if *ifp, u32 cmd, u32 *data)110{111__le32 *data_le = (__le32 *)data;112113*data_le = cpu_to_le32(*data);114return brcmf_fil_cmd_int_get(ifp, cmd, data);115}116117s32 brcmf_fil_iovar_data_set(struct brcmf_if *ifp, const char *name,118const void *data, u32 len);119s32 brcmf_fil_iovar_data_get(struct brcmf_if *ifp, const char *name, void *data,120u32 len);121static inline122s32 brcmf_fil_iovar_int_set(struct brcmf_if *ifp, const char *name, u32 data)123{124__le32 data_le = cpu_to_le32(data);125126return brcmf_fil_iovar_data_set(ifp, name, &data_le, sizeof(data_le));127}128static inline129s32 brcmf_fil_iovar_int_get(struct brcmf_if *ifp, const char *name, u32 *data)130{131s32 err;132133err = brcmf_fil_iovar_data_get(ifp, name, data, sizeof(*data));134if (err == 0)135*data = le32_to_cpu(*(__le32 *)data);136return err;137}138static inline139s32 brcmf_fil_iovar_int_query(struct brcmf_if *ifp, const char *name, u32 *data)140{141__le32 *data_le = (__le32 *)data;142143*data_le = cpu_to_le32(*data);144return brcmf_fil_iovar_int_get(ifp, name, data);145}146147148s32 brcmf_fil_bsscfg_data_set(struct brcmf_if *ifp, const char *name,149#if defined(__linux__)150void *data, u32 len);151#elif defined(__FreeBSD__)152const void *data, u32 len);153#endif154s32 brcmf_fil_bsscfg_data_get(struct brcmf_if *ifp, const char *name,155void *data, u32 len);156static inline157s32 brcmf_fil_bsscfg_int_set(struct brcmf_if *ifp, const char *name, u32 data)158{159__le32 data_le = cpu_to_le32(data);160161return brcmf_fil_bsscfg_data_set(ifp, name, &data_le,162sizeof(data_le));163}164static inline165s32 brcmf_fil_bsscfg_int_get(struct brcmf_if *ifp, const char *name, u32 *data)166{167s32 err;168169err = brcmf_fil_bsscfg_data_get(ifp, name, data, sizeof(*data));170if (err == 0)171*data = le32_to_cpu(*(__le32 *)data);172return err;173}174static inline175s32 brcmf_fil_bsscfg_int_query(struct brcmf_if *ifp, const char *name, u32 *data)176{177__le32 *data_le = (__le32 *)data;178179*data_le = cpu_to_le32(*data);180return brcmf_fil_bsscfg_int_get(ifp, name, data);181}182183s32 brcmf_fil_xtlv_data_set(struct brcmf_if *ifp, const char *name, u16 id,184void *data, u32 len);185s32 brcmf_fil_xtlv_data_get(struct brcmf_if *ifp, const char *name, u16 id,186void *data, u32 len);187static inline188s32 brcmf_fil_xtlv_int_set(struct brcmf_if *ifp, const char *name, u16 id,189u32 data)190{191__le32 data_le = cpu_to_le32(data);192193return brcmf_fil_xtlv_data_set(ifp, name, id, &data_le,194sizeof(data_le));195}196static inline197s32 brcmf_fil_xtlv_int_get(struct brcmf_if *ifp, const char *name, u16 id,198u32 *data)199{200__le32 data_le = cpu_to_le32(*data);201s32 err;202203err = brcmf_fil_xtlv_data_get(ifp, name, id, &data_le, sizeof(data_le));204if (err == 0)205*data = le32_to_cpu(data_le);206return err;207}208static inline209s32 brcmf_fil_xtlv_int8_get(struct brcmf_if *ifp, const char *name, u16 id,210u8 *data)211{212return brcmf_fil_xtlv_data_get(ifp, name, id, data, sizeof(*data));213}214static inline215s32 brcmf_fil_xtlv_int16_get(struct brcmf_if *ifp, const char *name, u16 id,216u16 *data)217{218__le16 data_le = cpu_to_le16(*data);219s32 err;220221err = brcmf_fil_xtlv_data_get(ifp, name, id, &data_le, sizeof(data_le));222if (err == 0)223*data = le16_to_cpu(data_le);224return err;225}226227#endif /* _fwil_h_ */228229230