bond: fix mac assignment to slaves
[dpdk.git] / app / test / virtual_pmd.c
index 81d4be3..9fac95d 100644 (file)
@@ -359,16 +359,18 @@ virtual_ethdev_tx_burst_success(void *queue, struct rte_mbuf **bufs,
 
        struct rte_eth_dev *vrtl_eth_dev;
        struct virtual_ethdev_private *dev_private;
-
+       uint64_t obytes = 0;
        int i;
 
+       for (i = 0; i < nb_pkts; i++)
+               obytes += rte_pktmbuf_pkt_len(bufs[i]);
        vrtl_eth_dev = &rte_eth_devices[tx_q->port_id];
        dev_private = vrtl_eth_dev->data->dev_private;
 
        if (vrtl_eth_dev->data->dev_link.link_status) {
                /* increment opacket count */
                dev_private->eth_stats.opackets += nb_pkts;
-
+               dev_private->eth_stats.obytes += obytes;
                /* free packets in burst */
                for (i = 0; i < nb_pkts; i++)
                        rte_pktmbuf_free(bufs[i]);
@@ -455,6 +457,14 @@ virtual_ethdev_tx_burst_fn_set_tx_pkt_fail_count(uint8_t port_id,
        dev_private->tx_burst_fail_count = packet_fail_count;
 }
 
+void
+virtual_ethdev_set_link_status(uint8_t port_id, uint8_t link_status)
+{
+       struct rte_eth_dev *vrtl_eth_dev = &rte_eth_devices[port_id];
+
+       vrtl_eth_dev->data->dev_link.link_status = link_status;
+}
+
 void
 virtual_ethdev_simulate_link_status_interrupt(uint8_t port_id,
                uint8_t link_status)
@@ -503,7 +513,7 @@ get_number_of_sockets(void)
 
 int
 virtual_ethdev_create(const char *name, struct ether_addr *mac_addr,
-               uint8_t socket_id)
+               uint8_t socket_id, uint8_t isr_support)
 {
        struct rte_pci_device *pci_dev = NULL;
        struct rte_eth_dev *eth_dev = NULL;
@@ -553,7 +563,12 @@ virtual_ethdev_create(const char *name, struct ether_addr *mac_addr,
        pci_dev->numa_node = socket_id;
        pci_drv->name = virtual_ethdev_driver_name;
        pci_drv->id_table = id_table;
-       pci_drv->drv_flags = RTE_PCI_DRV_INTR_LSC;
+
+       if (isr_support)
+               pci_drv->drv_flags |= RTE_PCI_DRV_INTR_LSC;
+       else
+               pci_drv->drv_flags &= ~RTE_PCI_DRV_INTR_LSC;
+
 
        eth_drv->pci_drv = (struct rte_pci_driver)(*pci_drv);
        eth_dev->driver = eth_drv;
@@ -573,7 +588,6 @@ virtual_ethdev_create(const char *name, struct ether_addr *mac_addr,
 
        memcpy(eth_dev->data->mac_addrs, mac_addr,
                        sizeof(*eth_dev->data->mac_addrs));
-       eth_dev->data->mac_addrs->addr_bytes[5] = eth_dev->data->port_id;
 
        eth_dev->data->dev_started = 0;
        eth_dev->data->promiscuous = 0;