bnxt_filter.h revision 809f0800
1/*-
2 *   BSD LICENSE
3 *
4 *   Copyright(c) Broadcom Limited.
5 *   All rights reserved.
6 *
7 *   Redistribution and use in source and binary forms, with or without
8 *   modification, are permitted provided that the following conditions
9 *   are met:
10 *
11 *     * Redistributions of source code must retain the above copyright
12 *       notice, this list of conditions and the following disclaimer.
13 *     * Redistributions in binary form must reproduce the above copyright
14 *       notice, this list of conditions and the following disclaimer in
15 *       the documentation and/or other materials provided with the
16 *       distribution.
17 *     * Neither the name of Broadcom Corporation nor the names of its
18 *       contributors may be used to endorse or promote products derived
19 *       from this software without specific prior written permission.
20 *
21 *   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22 *   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
23 *   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
24 *   A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
25 *   OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
26 *   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
27 *   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
28 *   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
29 *   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
30 *   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
31 *   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32 */
33
34#ifndef _BNXT_FILTER_H_
35#define _BNXT_FILTER_H_
36
37#include <rte_ether.h>
38
39struct bnxt;
40struct bnxt_filter_info {
41	STAILQ_ENTRY(bnxt_filter_info)	next;
42	uint64_t		fw_l2_filter_id;
43#define INVALID_MAC_INDEX	((uint16_t)-1)
44	uint16_t		mac_index;
45
46	/* Filter Characteristics */
47	uint32_t		flags;
48	uint32_t		enables;
49	uint8_t			l2_addr[ETHER_ADDR_LEN];
50	uint8_t			l2_addr_mask[ETHER_ADDR_LEN];
51	uint16_t		l2_ovlan;
52	uint16_t		l2_ovlan_mask;
53	uint16_t		l2_ivlan;
54	uint16_t		l2_ivlan_mask;
55	uint8_t			t_l2_addr[ETHER_ADDR_LEN];
56	uint8_t			t_l2_addr_mask[ETHER_ADDR_LEN];
57	uint16_t		t_l2_ovlan;
58	uint16_t		t_l2_ovlan_mask;
59	uint16_t		t_l2_ivlan;
60	uint16_t		t_l2_ivlan_mask;
61	uint8_t			tunnel_type;
62	uint16_t		mirror_vnic_id;
63	uint32_t		vni;
64	uint8_t			pri_hint;
65	uint64_t		l2_filter_id_hint;
66};
67
68struct bnxt_filter_info *bnxt_alloc_filter(struct bnxt *bp);
69void bnxt_init_filters(struct bnxt *bp);
70void bnxt_free_all_filters(struct bnxt *bp);
71void bnxt_free_filter_mem(struct bnxt *bp);
72int bnxt_alloc_filter_mem(struct bnxt *bp);
73
74#endif
75