dpdk/drivers/net/cxgbe/smt.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: BSD-3-Clause
   2 * Copyright(c) 2020 Chelsio Communications.
   3 * All rights reserved.
   4 */
   5#ifndef __CXGBE_SMT_H_
   6#define __CXGBE_SMT_H_
   7
   8#include "base/t4_msg.h"
   9
  10enum {
  11        SMT_STATE_SWITCHING,
  12        SMT_STATE_UNUSED,
  13        SMT_STATE_ERROR
  14};
  15
  16enum {
  17        SMT_SIZE = 256
  18};
  19
  20struct smt_entry {
  21        u16 state;
  22        u16 idx;
  23        u16 pfvf;
  24        u16 hw_idx;
  25        u8 src_mac[RTE_ETHER_ADDR_LEN];
  26        rte_atomic32_t refcnt;
  27        rte_spinlock_t lock;
  28};
  29
  30struct smt_data {
  31        unsigned int smt_size;
  32        unsigned int smt_start;
  33        rte_rwlock_t lock;
  34        struct smt_entry smtab[0];
  35};
  36
  37struct smt_data *t4_init_smt(u32 smt_start_idx, u32 smt_size);
  38void t4_cleanup_smt(struct adapter *adap);
  39void cxgbe_do_smt_write_rpl(struct adapter *adap,
  40                            const struct cpl_smt_write_rpl *rpl);
  41struct smt_entry *cxgbe_smt_alloc_switching(struct rte_eth_dev *dev, u8 *smac);
  42void cxgbe_smt_release(struct smt_entry *e);
  43
  44#endif  /* __CXGBE_SMT_H_ */
  45
  46