| // SPDX-License-Identifier: ISC |
| /* |
| * Copyright (c) 2019 Broadcom |
| */ |
| #ifndef __BRCMF_XTLV_H |
| #define __BRCMF_XTLV_H |
| |
| #include <linux/types.h> |
| #include <linux/bits.h> |
| |
| /* bcm type(id), length, value with w/16 bit id/len. The structure below |
| * is nominal, and is used to support variable length id and type. See |
| * xtlv options below. |
| */ |
| struct brcmf_xtlv { |
| u16 id; |
| u16 len; |
| u8 data[0]; |
| }; |
| |
| enum brcmf_xtlv_option { |
| BRCMF_XTLV_OPTION_ALIGN32 = BIT(0), |
| BRCMF_XTLV_OPTION_IDU8 = BIT(1), |
| BRCMF_XTLV_OPTION_LENU8 = BIT(2), |
| }; |
| |
| int brcmf_xtlv_data_size(int dlen, u16 opts); |
| void brcmf_xtlv_pack_header(struct brcmf_xtlv *xtlv, u16 id, u16 len, |
| const u8 *data, u16 opts); |
| |
| #endif /* __BRCMF_XTLV_H */ |