drivers/net: remove queue xstats auto-fill flag
[dpdk.git] / drivers / net / sfc / sfc_repr_proxy.h
index 1fe7ff3..b49b1a2 100644 (file)
@@ -19,6 +19,8 @@
 
 #include "sfc_repr.h"
 #include "sfc_dp.h"
+#include "sfc_flow.h"
+#include "sfc_mae.h"
 
 #ifdef __cplusplus
 extern "C" {
@@ -49,6 +51,14 @@ struct sfc_repr_proxy_txq {
        struct rte_ring                 *ring;
 };
 
+struct sfc_repr_proxy_filter {
+       /*
+        * 2 filters are required to match all incoming traffic, unknown
+        * unicast and unknown multicast.
+        */
+       efx_filter_spec_t specs[2];
+};
+
 struct sfc_repr_proxy_port {
        TAILQ_ENTRY(sfc_repr_proxy_port)        entries;
        uint16_t                                repr_id;
@@ -56,22 +66,44 @@ struct sfc_repr_proxy_port {
        efx_mport_id_t                          egress_mport;
        struct sfc_repr_proxy_rxq               rxq[SFC_REPR_RXQ_MAX];
        struct sfc_repr_proxy_txq               txq[SFC_REPR_TXQ_MAX];
+       struct sfc_mae_rule                     *mae_rule;
+       bool                                    enabled;
+       bool                                    started;
 };
 
 struct sfc_repr_proxy_dp_rxq {
        struct rte_mempool              *mp;
        unsigned int                    ref_count;
 
+       eth_rx_burst_t                  pkt_burst;
+       struct sfc_dp_rxq               *dp;
+
+       uint16_t                        route_port_id;
+       bool                            stop_route;
+       unsigned int                    available;
+       unsigned int                    forwarded;
+       unsigned int                    routed;
+       struct rte_mbuf                 *pkts[SFC_REPR_PROXY_TX_BURST];
+
        sfc_sw_index_t                  sw_index;
 };
 
 struct sfc_repr_proxy_dp_txq {
+       eth_tx_burst_t                  pkt_burst;
+       struct sfc_dp_txq               *dp;
+
+       unsigned int                    available;
+       unsigned int                    transmitted;
+       struct rte_mbuf                 *tx_pkts[SFC_REPR_PROXY_TX_BURST];
+
        sfc_sw_index_t                  sw_index;
 };
 
 enum sfc_repr_proxy_mbox_op {
        SFC_REPR_PROXY_MBOX_ADD_PORT,
        SFC_REPR_PROXY_MBOX_DEL_PORT,
+       SFC_REPR_PROXY_MBOX_START_PORT,
+       SFC_REPR_PROXY_MBOX_STOP_PORT,
 };
 
 struct sfc_repr_proxy_mbox {
@@ -92,8 +124,11 @@ struct sfc_repr_proxy {
        bool                            started;
        struct sfc_repr_proxy_dp_rxq    dp_rxq[SFC_REPR_PROXY_NB_RXQ_MAX];
        struct sfc_repr_proxy_dp_txq    dp_txq[SFC_REPR_PROXY_NB_TXQ_MAX];
+       struct sfc_repr_proxy_filter    mport_filter;
 
        struct sfc_repr_proxy_mbox      mbox;
+       unsigned int                    nb_txq;
+       unsigned int                    nb_rxq;
 };
 
 struct sfc_adapter;