[dpdk-dev,v6,04/25] lib/librte_vhost: remove mac learning, VMDQ, mac/vlan and other switching related logic
Commit Message
The following logics will be moved to vhost example.
1. mac learning, which is used to learn the mac address from the first transmitted packet of guest and bind
the vhost device to a queue in a pool of VMDQ.
2. VMDQ mac/vlan filter: Each pool the vhost device is bind to is assigned a mac/vlan filter.
3. num_devices is used to specify the maximum vhost devices the nic supports.
Signed-off-by: Huawei Xie <huawei.xie@intel.com>
---
lib/librte_vhost/rte_virtio_net.h | 6 ------
lib/librte_vhost/vhost_rxtx.c | 18 ------------------
lib/librte_vhost/virtio-net.c | 15 ---------------
3 files changed, 39 deletions(-)
@@ -83,15 +83,9 @@ struct virtio_net
{
struct vhost_virtqueue *virtqueue[VIRTIO_QNUM]; /* Contains all virtqueue information. */
struct virtio_memory *mem; /* QEMU memory and memory region information. */
- struct ether_addr mac_address; /* Device MAC address (Obtained on first TX packet). */
uint64_t features; /* Negotiated feature set. */
uint64_t device_fh; /* device identifier. */
- uint32_t vmdq_rx_q; /* RX VMDQ queue number. */
uint32_t flags; /* Device flags. Only used to check if device is running on data core. */
- uint32_t vlan_tag; /* Vlan tag for device. Currently set to device_id (0-63). */
- uint16_t coreid; /* Data core that the device is added to. */
- volatile uint8_t ready; /* A device is set as ready if the MAC address has been set. */
- volatile uint8_t remove; /* Device is marked for removal from the data core. */
} __rte_cache_aligned;
/*
@@ -735,24 +735,6 @@ virtio_dev_merge_tx(struct virtio_net *dev, struct rte_mempool *mbuf_pool)
m->nb_segs = seg_num;
- /*
- * If this is the first received packet we need to learn
- * the MAC and setup VMDQ
- */
- if (dev->ready == DEVICE_MAC_LEARNING) {
- if (dev->remove || (link_vmdq(dev, m) == -1)) {
- /*
- * Discard frame if device is scheduled for
- * removal or a duplicate MAC address is found.
- */
- entry_success = free_entries;
- vq->last_used_idx += entry_success;
- rte_pktmbuf_free(m);
- break;
- }
- }
-
- virtio_tx_route(dev, m, mbuf_pool, (uint16_t)dev->device_fh);
vq->last_used_idx++;
entry_success++;
rte_pktmbuf_free(m);
@@ -55,9 +55,6 @@
const char eventfd_cdev[] = "/dev/eventfd-link";
-extern uint32_t num_devices;
-static uint32_t num_cur_devices = 0;
-
/* device ops to add/remove device to data core. */
static struct virtio_net_device_ops const * notify_ops;
/* Root address of the linked list in the configuration core. */
@@ -434,12 +431,6 @@ new_device(struct vhost_device_ctx ctx)
struct virtio_net_config_ll *new_ll_dev;
struct vhost_virtqueue *virtqueue_rx, *virtqueue_tx;
- /*check the number of devices in the system*/
- if (num_cur_devices == num_devices) {
- RTE_LOG(ERR, VHOST_CONFIG, "() Max num devices (%u) exceeded\n", num_devices);
- return -1;
- }
-
/* Setup device and virtqueues. */
new_ll_dev = malloc(sizeof(struct virtio_net_config_ll));
if (new_ll_dev == NULL) {
@@ -473,9 +464,6 @@ new_device(struct vhost_device_ctx ctx)
/* Add entry to device configuration linked list. */
add_config_ll_entry(new_ll_dev);
- /*increment the number of devices in the system*/
- num_cur_devices++;
-
return new_ll_dev->dev.device_fh;
}
@@ -506,9 +494,6 @@ destroy_device(struct vhost_device_ctx ctx)
ll_dev_cur = ll_dev_cur->next;
}
}
-
- /*decrement the number of devices in the system*/
- num_cur_devices--;
}
/*