summaryrefslogtreecommitdiff
path: root/drivers/net/wireless/broadcom/brcm80211/brcmfmac/xtlv.h
blob: b2c7ae8966a1025d6b2af36bd793627b248340ba (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
// 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[];
};

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 */