eal: expose internal config elements
[dpdk.git] / drivers / net / liquidio / lio_struct.h
index da08fe4..10e3976 100644 (file)
@@ -56,6 +56,49 @@ struct lio_version {
        uint16_t reserved;
 };
 
+/** Input Queue statistics. Each input queue has four stats fields. */
+struct lio_iq_stats {
+       uint64_t instr_posted; /**< Instructions posted to this queue. */
+       uint64_t instr_processed; /**< Instructions processed in this queue. */
+       uint64_t instr_dropped; /**< Instructions that could not be processed */
+       uint64_t bytes_sent; /**< Bytes sent through this queue. */
+       uint64_t tx_done; /**< Num of packets sent to network. */
+       uint64_t tx_iq_busy; /**< Num of times this iq was found to be full. */
+       uint64_t tx_dropped; /**< Num of pkts dropped due to xmitpath errors. */
+       uint64_t tx_tot_bytes; /**< Total count of bytes sent to network. */
+};
+
+/** Output Queue statistics. Each output queue has four stats fields. */
+struct lio_droq_stats {
+       /** Number of packets received in this queue. */
+       uint64_t pkts_received;
+
+       /** Bytes received by this queue. */
+       uint64_t bytes_received;
+
+       /** Packets dropped due to no memory available. */
+       uint64_t dropped_nomem;
+
+       /** Packets dropped due to large number of pkts to process. */
+       uint64_t dropped_toomany;
+
+       /** Number of packets  sent to stack from this queue. */
+       uint64_t rx_pkts_received;
+
+       /** Number of Bytes sent to stack from this queue. */
+       uint64_t rx_bytes_received;
+
+       /** Num of Packets dropped due to receive path failures. */
+       uint64_t rx_dropped;
+
+       /** Num of vxlan packets received; */
+       uint64_t rx_vxlan;
+
+       /** Num of failures of rte_pktmbuf_alloc() */
+       uint64_t rx_alloc_failure;
+
+};
+
 /** The Descriptor Ring Output Queue structure.
  *  This structure has all the information required to implement a
  *  DROQ.
@@ -117,6 +160,9 @@ struct lio_droq {
         */
        void *pkts_sent_reg;
 
+       /** Statistics for this DROQ. */
+       struct lio_droq_stats stats;
+
        /** DMA mapped address of the DROQ descriptor ring. */
        size_t desc_ring_dma;
 
@@ -285,6 +331,9 @@ struct lio_instr_queue {
        /** Number of instructions pending to be posted to Octeon. */
        uint32_t fill_cnt;
 
+       /** Statistics for this input queue. */
+       struct lio_iq_stats stats;
+
        /** DMA mapped base address of the input descriptor ring. */
        uint64_t base_addr_dma;
 
@@ -357,6 +406,21 @@ struct lio_gather {
        struct lio_sg_entry *sg;
 };
 
+struct lio_rss_ctx {
+       uint16_t hash_key_size;
+       uint8_t  hash_key[LIO_RSS_MAX_KEY_SZ];
+       /* Ideally a factor of number of queues */
+       uint8_t  itable[LIO_RSS_MAX_TABLE_SZ];
+       uint8_t  itable_size;
+       uint8_t  ip;
+       uint8_t  tcp_hash;
+       uint8_t  ipv6;
+       uint8_t  ipv6_tcp_hash;
+       uint8_t  ipv6_ex;
+       uint8_t  ipv6_tcp_ex_hash;
+       uint8_t  hash_disable;
+};
+
 struct lio_io_enable {
        uint64_t iq;
        uint64_t oq;
@@ -619,6 +683,8 @@ struct lio_device {
        uint8_t nb_rx_queues;
        uint8_t nb_tx_queues;
        uint8_t port_configured;
-       uint8_t port_id;
+       struct lio_rss_ctx rss_state;
+       uint16_t port_id;
+       char firmware_version[LIO_FW_VERSION_LENGTH];
 };
 #endif /* _LIO_STRUCT_H_ */