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