1 /* SPDX-License-Identifier: BSD-3-Clause
3 * Copyright(c) 2019-2021 Xilinx, Inc.
4 * Copyright(c) 2019 Solarflare Communications Inc.
6 * This software was jointly developed between OKTET Labs (under contract
7 * for Solarflare) and Solarflare Communications, Inc.
10 #ifndef _SFC_REPR_PROXY_H
11 #define _SFC_REPR_PROXY_H
21 /* Number of supported RxQs with different mbuf memory pools */
22 #define SFC_REPR_PROXY_NB_RXQ_MIN (1)
23 #define SFC_REPR_PROXY_NB_RXQ_MAX (1)
25 /* One TxQ is required and sufficient for port representors support */
26 #define SFC_REPR_PROXY_NB_TXQ_MIN (1)
27 #define SFC_REPR_PROXY_NB_TXQ_MAX (1)
29 struct sfc_repr_proxy_port {
30 TAILQ_ENTRY(sfc_repr_proxy_port) entries;
33 efx_mport_id_t egress_mport;
36 enum sfc_repr_proxy_mbox_op {
37 SFC_REPR_PROXY_MBOX_ADD_PORT,
38 SFC_REPR_PROXY_MBOX_DEL_PORT,
41 struct sfc_repr_proxy_mbox {
42 struct sfc_repr_proxy_port *port;
43 enum sfc_repr_proxy_mbox_op op;
49 TAILQ_HEAD(sfc_repr_proxy_ports, sfc_repr_proxy_port);
51 struct sfc_repr_proxy {
52 uint32_t service_core_id;
54 efx_mport_id_t mport_alias;
55 struct sfc_repr_proxy_ports ports;
58 struct sfc_repr_proxy_mbox mbox;
63 int sfc_repr_proxy_attach(struct sfc_adapter *sa);
64 void sfc_repr_proxy_pre_detach(struct sfc_adapter *sa);
65 void sfc_repr_proxy_detach(struct sfc_adapter *sa);
66 int sfc_repr_proxy_start(struct sfc_adapter *sa);
67 void sfc_repr_proxy_stop(struct sfc_adapter *sa);
72 #endif /* _SFC_REPR_PROXY_H */