net/liquidio: fix port id type
[dpdk.git] / drivers / net / liquidio / lio_struct.h
index 906553c..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;
 
@@ -298,6 +347,30 @@ struct lio_instr_queue {
        const struct rte_memzone *iq_mz;
 };
 
+/** This structure is used by driver to store information required
+ *  to free the mbuff when the packet has been fetched by Octeon.
+ *  Bytes offset below assume worst-case of a 64-bit system.
+ */
+struct lio_buf_free_info {
+       /** Bytes 1-8. Pointer to network device private structure. */
+       struct lio_device *lio_dev;
+
+       /** Bytes 9-16. Pointer to mbuff. */
+       struct rte_mbuf *mbuf;
+
+       /** Bytes 17-24. Pointer to gather list. */
+       struct lio_gather *g;
+
+       /** Bytes 25-32. Physical address of mbuf->data or gather list. */
+       uint64_t dptr;
+
+       /** Bytes 33-47. Piggybacked soft command, if any */
+       struct lio_soft_command *sc;
+
+       /** Bytes 48-63. iq no */
+       uint64_t iq_no;
+};
+
 /* The Scatter-Gather List Entry. The scatter or gather component used with
  * input instruction has this format.
  */
@@ -333,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;
@@ -545,6 +633,8 @@ struct lio_device {
        /** The state of this device */
        rte_atomic64_t status;
 
+       uint8_t intf_open;
+
        struct octeon_link_info linfo;
 
        uint8_t *hw_addr;
@@ -593,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_ */