nexmon – Blame information for rev 1
?pathlinks?
Rev | Author | Line No. | Line |
---|---|---|---|
1 | office | 1 | /* Copyright (c) 2014 Broadcom Corporation |
2 | * |
||
3 | * Permission to use, copy, modify, and/or distribute this software for any |
||
4 | * purpose with or without fee is hereby granted, provided that the above |
||
5 | * copyright notice and this permission notice appear in all copies. |
||
6 | * |
||
7 | * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
||
8 | * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
||
9 | * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY |
||
10 | * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
||
11 | * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION |
||
12 | * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN |
||
13 | * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
||
14 | */ |
||
15 | #ifndef BRCMFMAC_FLOWRING_H |
||
16 | #define BRCMFMAC_FLOWRING_H |
||
17 | |||
18 | |||
19 | #define BRCMF_FLOWRING_HASHSIZE 512 /* has to be 2^x */ |
||
20 | #define BRCMF_FLOWRING_INVALID_ID 0xFFFFFFFF |
||
21 | |||
22 | |||
23 | struct brcmf_flowring_hash { |
||
24 | u8 mac[ETH_ALEN]; |
||
25 | u8 fifo; |
||
26 | u8 ifidx; |
||
27 | u16 flowid; |
||
28 | }; |
||
29 | |||
30 | enum ring_status { |
||
31 | RING_CLOSED, |
||
32 | RING_CLOSING, |
||
33 | RING_OPEN |
||
34 | }; |
||
35 | |||
36 | struct brcmf_flowring_ring { |
||
37 | u16 hash_id; |
||
38 | bool blocked; |
||
39 | enum ring_status status; |
||
40 | struct sk_buff_head skblist; |
||
41 | }; |
||
42 | |||
43 | struct brcmf_flowring_tdls_entry { |
||
44 | u8 mac[ETH_ALEN]; |
||
45 | struct brcmf_flowring_tdls_entry *next; |
||
46 | }; |
||
47 | |||
48 | struct brcmf_flowring { |
||
49 | struct device *dev; |
||
50 | struct brcmf_flowring_hash hash[BRCMF_FLOWRING_HASHSIZE]; |
||
51 | struct brcmf_flowring_ring **rings; |
||
52 | spinlock_t block_lock; |
||
53 | enum proto_addr_mode addr_mode[BRCMF_MAX_IFS]; |
||
54 | u16 nrofrings; |
||
55 | bool tdls_active; |
||
56 | struct brcmf_flowring_tdls_entry *tdls_entry; |
||
57 | }; |
||
58 | |||
59 | |||
60 | u32 brcmf_flowring_lookup(struct brcmf_flowring *flow, u8 da[ETH_ALEN], |
||
61 | u8 prio, u8 ifidx); |
||
62 | u32 brcmf_flowring_create(struct brcmf_flowring *flow, u8 da[ETH_ALEN], |
||
63 | u8 prio, u8 ifidx); |
||
64 | void brcmf_flowring_delete(struct brcmf_flowring *flow, u16 flowid); |
||
65 | void brcmf_flowring_open(struct brcmf_flowring *flow, u16 flowid); |
||
66 | u8 brcmf_flowring_tid(struct brcmf_flowring *flow, u16 flowid); |
||
67 | u32 brcmf_flowring_enqueue(struct brcmf_flowring *flow, u16 flowid, |
||
68 | struct sk_buff *skb); |
||
69 | struct sk_buff *brcmf_flowring_dequeue(struct brcmf_flowring *flow, u16 flowid); |
||
70 | void brcmf_flowring_reinsert(struct brcmf_flowring *flow, u16 flowid, |
||
71 | struct sk_buff *skb); |
||
72 | u32 brcmf_flowring_qlen(struct brcmf_flowring *flow, u16 flowid); |
||
73 | u8 brcmf_flowring_ifidx_get(struct brcmf_flowring *flow, u16 flowid); |
||
74 | struct brcmf_flowring *brcmf_flowring_attach(struct device *dev, u16 nrofrings); |
||
75 | void brcmf_flowring_detach(struct brcmf_flowring *flow); |
||
76 | void brcmf_flowring_configure_addr_mode(struct brcmf_flowring *flow, int ifidx, |
||
77 | enum proto_addr_mode addr_mode); |
||
78 | void brcmf_flowring_delete_peer(struct brcmf_flowring *flow, int ifidx, |
||
79 | u8 peer[ETH_ALEN]); |
||
80 | void brcmf_flowring_add_tdls_peer(struct brcmf_flowring *flow, int ifidx, |
||
81 | u8 peer[ETH_ALEN]); |
||
82 | |||
83 | |||
84 | #endif /* BRCMFMAC_FLOWRING_H */ |