xref: /dpdk/drivers/net/cxgbe/smt.h (revision e12a0166c80f65e35408f4715b2f3a60763c3741)
1a99564c6SKarra Satwik /* SPDX-License-Identifier: BSD-3-Clause
2a99564c6SKarra Satwik  * Copyright(c) 2020 Chelsio Communications.
3a99564c6SKarra Satwik  * All rights reserved.
4a99564c6SKarra Satwik  */
5a99564c6SKarra Satwik #ifndef __CXGBE_SMT_H_
6a99564c6SKarra Satwik #define __CXGBE_SMT_H_
7a99564c6SKarra Satwik 
8993541b2SKarra Satwik #include "base/t4_msg.h"
9993541b2SKarra Satwik 
10a99564c6SKarra Satwik enum {
11a99564c6SKarra Satwik 	SMT_STATE_SWITCHING,
12a99564c6SKarra Satwik 	SMT_STATE_UNUSED,
13a99564c6SKarra Satwik 	SMT_STATE_ERROR
14a99564c6SKarra Satwik };
15a99564c6SKarra Satwik 
16a99564c6SKarra Satwik enum {
17a99564c6SKarra Satwik 	SMT_SIZE = 256
18a99564c6SKarra Satwik };
19a99564c6SKarra Satwik 
20a99564c6SKarra Satwik struct smt_entry {
21a99564c6SKarra Satwik 	u16 state;
22a99564c6SKarra Satwik 	u16 idx;
23a99564c6SKarra Satwik 	u16 pfvf;
24a99564c6SKarra Satwik 	u16 hw_idx;
25a99564c6SKarra Satwik 	u8 src_mac[RTE_ETHER_ADDR_LEN];
26*e12a0166STyler Retzlaff 	RTE_ATOMIC(u32) refcnt;
27a99564c6SKarra Satwik 	rte_spinlock_t lock;
28a99564c6SKarra Satwik };
29a99564c6SKarra Satwik 
30a99564c6SKarra Satwik struct smt_data {
31a99564c6SKarra Satwik 	unsigned int smt_size;
32a99564c6SKarra Satwik 	unsigned int smt_start;
33a99564c6SKarra Satwik 	rte_rwlock_t lock;
34013b4c52SBruce Richardson 	struct smt_entry smtab[];
35a99564c6SKarra Satwik };
36a99564c6SKarra Satwik 
37a99564c6SKarra Satwik struct smt_data *t4_init_smt(u32 smt_start_idx, u32 smt_size);
38a99564c6SKarra Satwik void t4_cleanup_smt(struct adapter *adap);
39993541b2SKarra Satwik void cxgbe_do_smt_write_rpl(struct adapter *adap,
40993541b2SKarra Satwik 			    const struct cpl_smt_write_rpl *rpl);
41993541b2SKarra Satwik struct smt_entry *cxgbe_smt_alloc_switching(struct rte_eth_dev *dev, u8 *smac);
427fe1d0b4SRahul Lakkireddy void cxgbe_smt_release(struct smt_entry *e);
43a99564c6SKarra Satwik 
44a99564c6SKarra Satwik #endif  /* __CXGBE_SMT_H_ */
45