net/hns3: fix return value for unsupported tuple
[dpdk.git] / drivers / net / virtio / virtio.h
index 525e2da..5c8f71a 100644 (file)
@@ -30,6 +30,7 @@
 #define VIRTIO_NET_F_GUEST_ANNOUNCE 21 /* Guest can announce device on the network */
 #define VIRTIO_NET_F_MQ                22      /* Device supports Receive Flow Steering */
 #define VIRTIO_NET_F_CTRL_MAC_ADDR 23  /* Set MAC address */
+#define VIRTIO_NET_F_RSS       60      /* RSS supported */
 
 /*
  * Do we get callbacks when the ring is completely used,
  */
 #define VIRTIO_MAX_INDIRECT ((int)(rte_mem_page_size() / 16))
 
+/*  Virtio RSS hash types */
+#define VIRTIO_NET_HASH_TYPE_IPV4      RTE_BIT32(0)
+#define VIRTIO_NET_HASH_TYPE_TCPV4     RTE_BIT32(1)
+#define VIRTIO_NET_HASH_TYPE_UDPV4     RTE_BIT32(2)
+#define VIRTIO_NET_HASH_TYPE_IPV6      RTE_BIT32(3)
+#define VIRTIO_NET_HASH_TYPE_TCPV6     RTE_BIT32(4)
+#define VIRTIO_NET_HASH_TYPE_UDPV6     RTE_BIT32(5)
+#define VIRTIO_NET_HASH_TYPE_IP_EX     RTE_BIT32(6)
+#define VIRTIO_NET_HASH_TYPE_TCP_EX    RTE_BIT32(7)
+#define VIRTIO_NET_HASH_TYPE_UDP_EX    RTE_BIT32(8)
+
+#define VIRTIO_NET_HASH_TYPE_MASK ( \
+       VIRTIO_NET_HASH_TYPE_IPV4 | \
+       VIRTIO_NET_HASH_TYPE_TCPV4 | \
+       VIRTIO_NET_HASH_TYPE_UDPV4 | \
+       VIRTIO_NET_HASH_TYPE_IPV6 | \
+       VIRTIO_NET_HASH_TYPE_TCPV6 | \
+       VIRTIO_NET_HASH_TYPE_UDPV6 | \
+       VIRTIO_NET_HASH_TYPE_IP_EX | \
+       VIRTIO_NET_HASH_TYPE_TCP_EX | \
+       VIRTIO_NET_HASH_TYPE_UDP_EX)
+
+
 /*
  * Maximum number of virtqueues per device.
  */
@@ -157,7 +181,9 @@ struct virtio_net_config {
         * Any other value stands for unknown.
         */
        uint8_t duplex;
-
+       uint8_t rss_max_key_size;
+       uint16_t rss_max_indirection_table_length;
+       uint32_t supported_hash_types;
 } __rte_packed;
 
 struct virtio_hw {
@@ -177,6 +203,11 @@ struct virtio_hw {
        uint8_t opened;
        uint16_t port_id;
        uint8_t mac_addr[RTE_ETHER_ADDR_LEN];
+       /*
+        * Speed is specified via 'speed' devarg or
+        * negotiated via VIRTIO_NET_F_SPEED_DUPLEX
+        */
+       bool get_speed_via_feat;
        uint32_t speed;  /* link speed in MB */
        uint8_t duplex;
        uint8_t intr_lsc;
@@ -190,8 +221,13 @@ struct virtio_hw {
        rte_spinlock_t state_lock;
        struct rte_mbuf **inject_pkts;
        uint16_t max_queue_pairs;
+       uint16_t rss_rx_queues;
+       uint32_t rss_hash_types;
+       uint16_t *rss_reta;
+       uint8_t *rss_key;
        uint64_t req_guest_features;
        struct virtnet_ctl *cvq;
+       bool use_va;
 };
 
 struct virtio_ops {