common/sfc_efx/base: refactor RSS table entry count name
[dpdk.git] / examples / vhost / main.c
index d0bf1f3..590a77c 100644 (file)
@@ -44,6 +44,7 @@
 #define BURST_RX_RETRIES 4             /* Number of retries on RX. */
 
 #define JUMBO_FRAME_MAX_SIZE    0x2600
+#define MAX_MTU (JUMBO_FRAME_MAX_SIZE - (RTE_ETHER_HDR_LEN + RTE_ETHER_CRC_LEN))
 
 /* State of virtio device. */
 #define DEVICE_MAC_LEARNING 0
@@ -106,26 +107,26 @@ static uint32_t burst_rx_retry_num = BURST_RX_RETRIES;
 static char *socket_files;
 static int nb_sockets;
 
-/* empty vmdq configuration structure. Filled in programatically */
+/* empty VMDq configuration structure. Filled in programmatically */
 static struct rte_eth_conf vmdq_conf_default = {
        .rxmode = {
-               .mq_mode        = ETH_MQ_RX_VMDQ_ONLY,
+               .mq_mode        = RTE_ETH_MQ_RX_VMDQ_ONLY,
                .split_hdr_size = 0,
                /*
                 * VLAN strip is necessary for 1G NIC such as I350,
                 * this fixes bug of ipv4 forwarding in guest can't
-                * forward pakets from one virtio dev to another virtio dev.
+                * forward packets from one virtio dev to another virtio dev.
                 */
-               .offloads = DEV_RX_OFFLOAD_VLAN_STRIP,
+               .offloads = RTE_ETH_RX_OFFLOAD_VLAN_STRIP,
        },
 
        .txmode = {
-               .mq_mode = ETH_MQ_TX_NONE,
-               .offloads = (DEV_TX_OFFLOAD_IPV4_CKSUM |
-                            DEV_TX_OFFLOAD_TCP_CKSUM |
-                            DEV_TX_OFFLOAD_VLAN_INSERT |
-                            DEV_TX_OFFLOAD_MULTI_SEGS |
-                            DEV_TX_OFFLOAD_TCP_TSO),
+               .mq_mode = RTE_ETH_MQ_TX_NONE,
+               .offloads = (RTE_ETH_TX_OFFLOAD_IPV4_CKSUM |
+                            RTE_ETH_TX_OFFLOAD_TCP_CKSUM |
+                            RTE_ETH_TX_OFFLOAD_VLAN_INSERT |
+                            RTE_ETH_TX_OFFLOAD_MULTI_SEGS |
+                            RTE_ETH_TX_OFFLOAD_TCP_TSO),
        },
        .rx_adv_conf = {
                /*
@@ -133,7 +134,7 @@ static struct rte_eth_conf vmdq_conf_default = {
                 * appropriate values
                 */
                .vmdq_rx_conf = {
-                       .nb_queue_pools = ETH_8_POOLS,
+                       .nb_queue_pools = RTE_ETH_8_POOLS,
                        .enable_default_pool = 0,
                        .default_pool = 0,
                        .nb_pool_maps = 0,
@@ -194,7 +195,6 @@ struct vhost_bufftable *vhost_txbuff[RTE_MAX_LCORE * MAX_VHOST_DEVICE];
 
 #define MBUF_TABLE_DRAIN_TSC   ((rte_get_tsc_hz() + US_PER_S - 1) \
                                 / US_PER_S * BURST_TX_DRAIN_US)
-#define VLAN_HLEN       4
 
 static inline int
 open_dma(const char *value)
@@ -272,6 +272,13 @@ port_init(uint16_t port)
 
        tx_rings = (uint16_t)rte_lcore_count();
 
+       if (mergeable) {
+               if (dev_info.max_mtu != UINT16_MAX && dev_info.max_rx_pktlen > dev_info.max_mtu)
+                       vmdq_conf_default.rxmode.mtu = dev_info.max_mtu;
+               else
+                       vmdq_conf_default.rxmode.mtu = MAX_MTU;
+       }
+
        /* Get port configuration. */
        retval = get_eth_conf(&port_conf, num_devices);
        if (retval < 0)
@@ -290,9 +297,9 @@ port_init(uint16_t port)
                return -1;
 
        rx_rings = (uint16_t)dev_info.max_rx_queues;
-       if (dev_info.tx_offload_capa & DEV_TX_OFFLOAD_MBUF_FAST_FREE)
+       if (dev_info.tx_offload_capa & RTE_ETH_TX_OFFLOAD_MBUF_FAST_FREE)
                port_conf.txmode.offloads |=
-                       DEV_TX_OFFLOAD_MBUF_FAST_FREE;
+                       RTE_ETH_TX_OFFLOAD_MBUF_FAST_FREE;
        /* Configure ethernet device. */
        retval = rte_eth_dev_configure(port, rx_rings, tx_rings, &port_conf);
        if (retval != 0) {
@@ -456,7 +463,7 @@ us_vhost_usage(const char *prgname)
        "               --nb-devices ND\n"
        "               -p PORTMASK: Set mask for ports to be used by application\n"
        "               --vm2vm [0|1|2]: disable/software(default)/hardware vm2vm comms\n"
-       "               --rx-retry [0|1]: disable/enable(default) retries on rx. Enable retry if destintation queue is full\n"
+       "               --rx-retry [0|1]: disable/enable(default) retries on Rx. Enable retry if destination queue is full\n"
        "               --rx-retry-delay [0-N]: timeout(in usecond) between retries on RX. This makes effect only if retries on rx enabled\n"
        "               --rx-retry-num [0-N]: the number of retries on rx. This makes effect only if retries on rx enabled\n"
        "               --mergeable [0|1]: disable(default)/enable RX mergeable buffers\n"
@@ -556,8 +563,8 @@ us_vhost_parse_args(int argc, char **argv)
                case 'P':
                        promiscuous = 1;
                        vmdq_conf_default.rx_adv_conf.vmdq_rx_conf.rx_mode =
-                               ETH_VMDQ_ACCEPT_BROADCAST |
-                               ETH_VMDQ_ACCEPT_MULTICAST;
+                               RTE_ETH_VMDQ_ACCEPT_BROADCAST |
+                               RTE_ETH_VMDQ_ACCEPT_MULTICAST;
                        break;
 
                case OPT_VM2VM_NUM:
@@ -630,12 +637,6 @@ us_vhost_parse_args(int argc, char **argv)
                                return -1;
                        }
                        mergeable = !!ret;
-                       if (ret) {
-                               vmdq_conf_default.rxmode.offloads |=
-                                       DEV_RX_OFFLOAD_JUMBO_FRAME;
-                               vmdq_conf_default.rxmode.max_rx_pkt_len
-                                       = JUMBO_FRAME_MAX_SIZE;
-                       }
                        break;
 
                case OPT_STATS_NUM:
@@ -757,7 +758,7 @@ link_vmdq(struct vhost_dev *vdev, struct rte_mbuf *m)
        /* Learn MAC address of guest device from packet */
        pkt_hdr = rte_pktmbuf_mtod(m, struct rte_ether_hdr *);
 
-       if (find_vhost_dev(&pkt_hdr->s_addr)) {
+       if (find_vhost_dev(&pkt_hdr->src_addr)) {
                RTE_LOG(ERR, VHOST_DATA,
                        "(%d) device is using a registered MAC!\n",
                        vdev->vid);
@@ -765,7 +766,8 @@ link_vmdq(struct vhost_dev *vdev, struct rte_mbuf *m)
        }
 
        for (i = 0; i < RTE_ETHER_ADDR_LEN; i++)
-               vdev->mac_address.addr_bytes[i] = pkt_hdr->s_addr.addr_bytes[i];
+               vdev->mac_address.addr_bytes[i] =
+                       pkt_hdr->src_addr.addr_bytes[i];
 
        /* vlan_tag currently uses the device_id. */
        vdev->vlan_tag = vlan_tags[vdev->vid];
@@ -916,6 +918,9 @@ drain_vhost_table(void)
        uint64_t cur_tsc;
 
        TAILQ_FOREACH(vdev, &vhost_dev_list, global_vdev_entry) {
+               if (unlikely(vdev->remove == 1))
+                       continue;
+
                vhost_txq = vhost_txbuff[lcore_id * MAX_VHOST_DEVICE
                                                + vdev->vid];
 
@@ -945,7 +950,7 @@ virtio_tx_local(struct vhost_dev *vdev, struct rte_mbuf *m)
        uint16_t lcore_id = rte_lcore_id();
        pkt_hdr = rte_pktmbuf_mtod(m, struct rte_ether_hdr *);
 
-       dst_vdev = find_vhost_dev(&pkt_hdr->d_addr);
+       dst_vdev = find_vhost_dev(&pkt_hdr->dst_addr);
        if (!dst_vdev)
                return -1;
 
@@ -993,7 +998,7 @@ find_local_dest(struct vhost_dev *vdev, struct rte_mbuf *m,
        struct rte_ether_hdr *pkt_hdr =
                rte_pktmbuf_mtod(m, struct rte_ether_hdr *);
 
-       dst_vdev = find_vhost_dev(&pkt_hdr->d_addr);
+       dst_vdev = find_vhost_dev(&pkt_hdr->dst_addr);
        if (!dst_vdev)
                return 0;
 
@@ -1009,7 +1014,7 @@ find_local_dest(struct vhost_dev *vdev, struct rte_mbuf *m,
         * by minus length of vlan tag, so need restore
         * the packet length by plus it.
         */
-       *offset  = VLAN_HLEN;
+       *offset  = RTE_VLAN_HLEN;
        *vlan_tag = vlan_tags[vdev->vid];
 
        RTE_LOG_DP(DEBUG, VHOST_DATA,
@@ -1036,15 +1041,15 @@ static void virtio_tx_offload(struct rte_mbuf *m)
        tcp_hdr = rte_pktmbuf_mtod_offset(m, struct rte_tcp_hdr *,
                m->l2_len + m->l3_len);
 
-       m->ol_flags |= PKT_TX_TCP_SEG;
+       m->ol_flags |= RTE_MBUF_F_TX_TCP_SEG;
        if ((ptype & RTE_PTYPE_L3_MASK) == RTE_PTYPE_L3_IPV4) {
-               m->ol_flags |= PKT_TX_IPV4;
-               m->ol_flags |= PKT_TX_IP_CKSUM;
+               m->ol_flags |= RTE_MBUF_F_TX_IPV4;
+               m->ol_flags |= RTE_MBUF_F_TX_IP_CKSUM;
                ipv4_hdr = l3_hdr;
                ipv4_hdr->hdr_checksum = 0;
                tcp_hdr->cksum = rte_ipv4_phdr_cksum(l3_hdr, m->ol_flags);
        } else { /* assume ethertype == RTE_ETHER_TYPE_IPV6 */
-               m->ol_flags |= PKT_TX_IPV6;
+               m->ol_flags |= RTE_MBUF_F_TX_IPV6;
                tcp_hdr->cksum = rte_ipv6_phdr_cksum(l3_hdr, m->ol_flags);
        }
 }
@@ -1076,7 +1081,7 @@ virtio_tx_route(struct vhost_dev *vdev, struct rte_mbuf *m, uint16_t vlan_tag)
 
 
        nh = rte_pktmbuf_mtod(m, struct rte_ether_hdr *);
-       if (unlikely(rte_is_broadcast_ether_addr(&nh->d_addr))) {
+       if (unlikely(rte_is_broadcast_ether_addr(&nh->dst_addr))) {
                struct vhost_dev *vdev2;
 
                TAILQ_FOREACH(vdev2, &vhost_dev_list, global_vdev_entry) {
@@ -1115,7 +1120,7 @@ queue2nic:
                        (vh->vlan_tci != vlan_tag_be))
                        vh->vlan_tci = vlan_tag_be;
        } else {
-               m->ol_flags |= PKT_TX_VLAN_PKT;
+               m->ol_flags |= RTE_MBUF_F_TX_VLAN;
 
                /*
                 * Find the right seg to adjust the data len when offset is
@@ -1139,7 +1144,7 @@ queue2nic:
                m->vlan_tci = vlan_tag;
        }
 
-       if (m->ol_flags & PKT_RX_LRO)
+       if (m->ol_flags & RTE_MBUF_F_RX_LRO)
                virtio_tx_offload(m);
 
        tx_q->m_table[tx_q->len++] = m;
@@ -1284,7 +1289,7 @@ switch_worker(void *arg __rte_unused)
        struct vhost_dev *vdev;
        struct mbuf_table *tx_q;
 
-       RTE_LOG(INFO, VHOST_DATA, "Procesing on Core %u started\n", lcore_id);
+       RTE_LOG(INFO, VHOST_DATA, "Processing on Core %u started\n", lcore_id);
 
        tx_q = &lcore_tx_queue[lcore_id];
        for (i = 0; i < rte_lcore_count(); i++) {
@@ -1328,7 +1333,7 @@ switch_worker(void *arg __rte_unused)
 
 /*
  * Remove a device from the specific data core linked list and from the
- * main linked list. Synchonization  occurs through the use of the
+ * main linked list. Synchronization  occurs through the use of the
  * lcore dev_removal_flag. Device is made volatile here to avoid re-ordering
  * of dev->remove=1 which can cause an infinite loop in the rte_pause loop.
  */
@@ -1518,7 +1523,7 @@ vring_state_changed(int vid, uint16_t queue_id, int enable)
  * These callback allow devices to be added to the data core when configuration
  * has been fully complete.
  */
-static const struct vhost_device_ops virtio_net_device_ops =
+static const struct rte_vhost_device_ops virtio_net_device_ops =
 {
        .new_device =  new_device,
        .destroy_device = destroy_device,