Code Review
/
deb_dpdk.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
review
|
tree
raw
|
inline
| side by side
Imported Upstream version 16.07-rc1
[deb_dpdk.git]
/
examples
/
tep_termination
/
main.c
diff --git
a/examples/tep_termination/main.c
b/examples/tep_termination/main.c
index
f97d552
..
622f248
100644
(file)
--- a/
examples/tep_termination/main.c
+++ b/
examples/tep_termination/main.c
@@
-566,10
+566,9
@@
virtio_tx_route(struct vhost_dev *vdev, struct rte_mbuf *m)
struct rte_mbuf **m_table;
unsigned len, ret = 0;
const uint16_t lcore_id = rte_lcore_id();
struct rte_mbuf **m_table;
unsigned len, ret = 0;
const uint16_t lcore_id = rte_lcore_id();
- struct virtio_net *dev = vdev->dev;
-
LOG_DEBUG(VHOST_DATA, "(%"PRIu64"
) TX: MAC address is external\n",
-
dev->device_fh
);
+
RTE_LOG(DEBUG, VHOST_DATA, "(%d
) TX: MAC address is external\n",
+
vdev->vid
);
/* Add packet to the port tx queue */
tx_q = &lcore_tx_queue[lcore_id];
/* Add packet to the port tx queue */
tx_q = &lcore_tx_queue[lcore_id];
@@
-578,8
+577,8
@@
virtio_tx_route(struct vhost_dev *vdev, struct rte_mbuf *m)
tx_q->m_table[len] = m;
len++;
if (enable_stats) {
tx_q->m_table[len] = m;
len++;
if (enable_stats) {
- dev_statistics[
dev->device_fh
].tx_total++;
- dev_statistics[
dev->device_fh
].tx++;
+ dev_statistics[
vdev->vid
].tx_total++;
+ dev_statistics[
vdev->vid
].tx++;
}
if (unlikely(len == MAX_PKT_BURST)) {
}
if (unlikely(len == MAX_PKT_BURST)) {
@@
-614,7
+613,6
@@
static int
switch_worker(__rte_unused void *arg)
{
struct rte_mempool *mbuf_pool = arg;
switch_worker(__rte_unused void *arg)
{
struct rte_mempool *mbuf_pool = arg;
- struct virtio_net *dev = NULL;
struct vhost_dev *vdev = NULL;
struct rte_mbuf *pkts_burst[MAX_PKT_BURST];
struct virtio_net_data_ll *dev_ll;
struct vhost_dev *vdev = NULL;
struct rte_mbuf *pkts_burst[MAX_PKT_BURST];
struct virtio_net_data_ll *dev_ll;
@@
-651,7
+649,7
@@
switch_worker(__rte_unused void *arg)
if (unlikely(diff_tsc > drain_tsc)) {
if (tx_q->len) {
if (unlikely(diff_tsc > drain_tsc)) {
if (tx_q->len) {
-
LOG_DEBUG(
VHOST_DATA, "TX queue drained after "
+
RTE_LOG(DEBUG,
VHOST_DATA, "TX queue drained after "
"timeout with burst size %u\n",
tx_q->len);
ret = overlay_options.tx_handle(ports[0],
"timeout with burst size %u\n",
tx_q->len);
ret = overlay_options.tx_handle(ports[0],
@@
-688,7
+686,6
@@
switch_worker(__rte_unused void *arg)
while (dev_ll != NULL) {
vdev = dev_ll->vdev;
while (dev_ll != NULL) {
vdev = dev_ll->vdev;
- dev = vdev->dev;
if (unlikely(vdev->remove)) {
dev_ll = dev_ll->next;
if (unlikely(vdev->remove)) {
dev_ll = dev_ll->next;
@@
-709,22
+706,22
@@
switch_worker(__rte_unused void *arg)
* must be less than virtio queue size
*/
if (enable_retry && unlikely(rx_count >
* must be less than virtio queue size
*/
if (enable_retry && unlikely(rx_count >
- rte_v
ring_available_entries(dev
, VIRTIO_RXQ))) {
+ rte_v
host_avail_entries(vdev->vid
, VIRTIO_RXQ))) {
for (retry = 0; retry < burst_rx_retry_num;
retry++) {
rte_delay_us(burst_rx_delay_time);
for (retry = 0; retry < burst_rx_retry_num;
retry++) {
rte_delay_us(burst_rx_delay_time);
- if (rx_count <= rte_v
ring_available_entries(dev
, VIRTIO_RXQ))
+ if (rx_count <= rte_v
host_avail_entries(vdev->vid
, VIRTIO_RXQ))
break;
}
}
break;
}
}
- ret_count = overlay_options.rx_handle(
dev
, pkts_burst, rx_count);
+ ret_count = overlay_options.rx_handle(
vdev->vid
, pkts_burst, rx_count);
if (enable_stats) {
rte_atomic64_add(
if (enable_stats) {
rte_atomic64_add(
- &dev_statistics[
dev->device_fh
].rx_total_atomic,
+ &dev_statistics[
vdev->vid
].rx_total_atomic,
rx_count);
rte_atomic64_add(
rx_count);
rte_atomic64_add(
- &dev_statistics[
dev->device_fh
].rx_atomic, ret_count);
+ &dev_statistics[
vdev->vid
].rx_atomic, ret_count);
}
while (likely(rx_count)) {
rx_count--;
}
while (likely(rx_count)) {
rx_count--;
@@
-736,7
+733,7
@@
switch_worker(__rte_unused void *arg)
if (likely(!vdev->remove)) {
/* Handle guest TX*/
if (likely(!vdev->remove)) {
/* Handle guest TX*/
- tx_count = rte_vhost_dequeue_burst(
dev
,
+ tx_count = rte_vhost_dequeue_burst(
vdev->vid
,
VIRTIO_TXQ, mbuf_pool,
pkts_burst, MAX_PKT_BURST);
/* If this is the first received packet we need to learn the MAC */
VIRTIO_TXQ, mbuf_pool,
pkts_burst, MAX_PKT_BURST);
/* If this is the first received packet we need to learn the MAC */
@@
-908,23
+905,27
@@
init_data_ll(void)
/**
* Remove a device from the specific data core linked list and
* from the main linked list. Synchonization occurs through the use
/**
* Remove a device from the specific data core linked list and
* from the main linked list. Synchonization 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.
+ * of the lcore dev_removal_flag.
*/
static void
*/
static void
-destroy_device(
volatile struct virtio_net *dev
)
+destroy_device(
int vid
)
{
struct virtio_net_data_ll *ll_lcore_dev_cur;
struct virtio_net_data_ll *ll_main_dev_cur;
struct virtio_net_data_ll *ll_lcore_dev_last = NULL;
struct virtio_net_data_ll *ll_main_dev_last = NULL;
{
struct virtio_net_data_ll *ll_lcore_dev_cur;
struct virtio_net_data_ll *ll_main_dev_cur;
struct virtio_net_data_ll *ll_lcore_dev_last = NULL;
struct virtio_net_data_ll *ll_main_dev_last = NULL;
- struct vhost_dev *vdev;
+ struct vhost_dev *vdev
= NULL
;
int lcore;
int lcore;
- dev->flags &= ~VIRTIO_DEV_RUNNING;
-
- vdev = (struct vhost_dev *)dev->priv;
+ ll_main_dev_cur = ll_root_used;
+ while (ll_main_dev_cur != NULL) {
+ if (ll_main_dev_cur->vdev->vid == vid) {
+ vdev = ll_main_dev_cur->vdev;
+ break;
+ }
+ }
+ if (!vdev)
+ return;
/* set the remove flag. */
vdev->remove = 1;
/* set the remove flag. */
vdev->remove = 1;
@@
-944,8
+945,7
@@
destroy_device(volatile struct virtio_net *dev)
if (ll_lcore_dev_cur == NULL) {
RTE_LOG(ERR, VHOST_CONFIG,
if (ll_lcore_dev_cur == NULL) {
RTE_LOG(ERR, VHOST_CONFIG,
- "(%"PRIu64") Failed to find the dev to be destroy.\n",
- dev->device_fh);
+ "(%d) Failed to find the dev to be destroy.\n", vid);
return;
}
return;
}
@@
-992,8
+992,8
@@
destroy_device(volatile struct virtio_net *dev)
/* Decrement number of device on the lcore. */
lcore_info[vdev->coreid].lcore_ll->device_num--;
/* Decrement number of device on the lcore. */
lcore_info[vdev->coreid].lcore_ll->device_num--;
- RTE_LOG(INFO, VHOST_DATA, "(%
"PRIu64"
) Device has been removed "
- "from data core\n",
dev->device_fh
);
+ RTE_LOG(INFO, VHOST_DATA, "(%
d
) Device has been removed "
+ "from data core\n",
vid
);
rte_free(vdev);
rte_free(vdev);
@@
-1004,7
+1004,7
@@
destroy_device(volatile struct virtio_net *dev)
* to the main linked list and the allocated to a specific data core.
*/
static int
* to the main linked list and the allocated to a specific data core.
*/
static int
-new_device(
struct virtio_net *dev
)
+new_device(
int vid
)
{
struct virtio_net_data_ll *ll_dev;
int lcore, core_add = 0;
{
struct virtio_net_data_ll *ll_dev;
int lcore, core_add = 0;
@@
-1014,18
+1014,16
@@
new_device(struct virtio_net *dev)
vdev = rte_zmalloc("vhost device", sizeof(*vdev), RTE_CACHE_LINE_SIZE);
if (vdev == NULL) {
RTE_LOG(INFO, VHOST_DATA,
vdev = rte_zmalloc("vhost device", sizeof(*vdev), RTE_CACHE_LINE_SIZE);
if (vdev == NULL) {
RTE_LOG(INFO, VHOST_DATA,
- "(%"PRIu64") Couldn't allocate memory for vhost dev\n",
- dev->device_fh);
+ "(%d) Couldn't allocate memory for vhost dev\n", vid);
return -1;
}
return -1;
}
- vdev->dev = dev;
- dev->priv = vdev;
+ vdev->vid = vid;
/* Add device to main ll */
ll_dev = get_data_ll_free_entry(&ll_root_free);
if (ll_dev == NULL) {
/* Add device to main ll */
ll_dev = get_data_ll_free_entry(&ll_root_free);
if (ll_dev == NULL) {
- RTE_LOG(INFO, VHOST_DATA, "(%
"PRIu64"
) No free entry found in"
+ RTE_LOG(INFO, VHOST_DATA, "(%
d
) No free entry found in"
" linked list Device limit of %d devices per core"
" linked list Device limit of %d devices per core"
- " has been reached\n",
dev->device_fh
, nb_devices);
+ " has been reached\n",
vid
, nb_devices);
if (vdev->regions_hpa)
rte_free(vdev->regions_hpa);
rte_free(vdev);
if (vdev->regions_hpa)
rte_free(vdev->regions_hpa);
rte_free(vdev);
@@
-1033,7
+1031,7
@@
new_device(struct virtio_net *dev)
}
ll_dev->vdev = vdev;
add_data_ll_entry(&ll_root_used, ll_dev);
}
ll_dev->vdev = vdev;
add_data_ll_entry(&ll_root_used, ll_dev);
- vdev->rx_q =
dev->device_fh
;
+ vdev->rx_q =
vid
;
/* reset ready flag */
vdev->ready = DEVICE_MAC_LEARNING;
/* reset ready flag */
vdev->ready = DEVICE_MAC_LEARNING;
@@
-1050,10
+1048,10
@@
new_device(struct virtio_net *dev)
ll_dev = get_data_ll_free_entry(&lcore_info[core_add].lcore_ll->ll_root_free);
if (ll_dev == NULL) {
RTE_LOG(INFO, VHOST_DATA,
ll_dev = get_data_ll_free_entry(&lcore_info[core_add].lcore_ll->ll_root_free);
if (ll_dev == NULL) {
RTE_LOG(INFO, VHOST_DATA,
- "(%
"PRIu64"
) Failed to add device to data core\n",
-
dev->device_fh
);
+ "(%
d
) Failed to add device to data core\n",
+
vid
);
vdev->ready = DEVICE_SAFE_REMOVE;
vdev->ready = DEVICE_SAFE_REMOVE;
- destroy_device(
dev
);
+ destroy_device(
vid
);
rte_free(vdev->regions_hpa);
rte_free(vdev);
return -1;
rte_free(vdev->regions_hpa);
rte_free(vdev);
return -1;
@@
-1065,17
+1063,16
@@
new_device(struct virtio_net *dev)
ll_dev);
/* Initialize device stats */
ll_dev);
/* Initialize device stats */
- memset(&dev_statistics[
dev->device_fh
], 0,
+ memset(&dev_statistics[
vid
], 0,
sizeof(struct device_statistics));
/* Disable notifications. */
sizeof(struct device_statistics));
/* Disable notifications. */
- rte_vhost_enable_guest_notification(
dev
, VIRTIO_RXQ, 0);
- rte_vhost_enable_guest_notification(
dev
, VIRTIO_TXQ, 0);
+ rte_vhost_enable_guest_notification(
vid
, VIRTIO_RXQ, 0);
+ rte_vhost_enable_guest_notification(
vid
, VIRTIO_TXQ, 0);
lcore_info[vdev->coreid].lcore_ll->device_num++;
lcore_info[vdev->coreid].lcore_ll->device_num++;
- dev->flags |= VIRTIO_DEV_RUNNING;
- RTE_LOG(INFO, VHOST_DATA, "(%
"PRIu64"
) Device has been added to data core %d\n",
-
dev->device_fh
, vdev->coreid);
+ RTE_LOG(INFO, VHOST_DATA, "(%
d
) Device has been added to data core %d\n",
+
vid
, vdev->coreid);
return 0;
}
return 0;
}
@@
-1099,7
+1096,7
@@
print_stats(void)
struct virtio_net_data_ll *dev_ll;
uint64_t tx_dropped, rx_dropped;
uint64_t tx, tx_total, rx, rx_total, rx_ip_csum, rx_l4_csum;
struct virtio_net_data_ll *dev_ll;
uint64_t tx_dropped, rx_dropped;
uint64_t tx, tx_total, rx, rx_total, rx_ip_csum, rx_l4_csum;
-
uint32_t device_fh
;
+
int vid
;
const char clr[] = { 27, '[', '2', 'J', '\0' };
const char top_left[] = { 27, '[', '1', ';', '1', 'H', '\0' };
const char clr[] = { 27, '[', '2', 'J', '\0' };
const char top_left[] = { 27, '[', '1', ';', '1', 'H', '\0' };
@@
-1113,22
+1110,22
@@
print_stats(void)
dev_ll = ll_root_used;
while (dev_ll != NULL) {
dev_ll = ll_root_used;
while (dev_ll != NULL) {
-
device_fh = (uint32_t)dev_ll->vdev->dev->device_fh
;
- tx_total = dev_statistics[
device_fh
].tx_total;
- tx = dev_statistics[
device_fh
].tx;
+
vid = dev_ll->vdev->vid
;
+ tx_total = dev_statistics[
vid
].tx_total;
+ tx = dev_statistics[
vid
].tx;
tx_dropped = tx_total - tx;
rx_total = rte_atomic64_read(
tx_dropped = tx_total - tx;
rx_total = rte_atomic64_read(
- &dev_statistics[
device_fh
].rx_total_atomic);
+ &dev_statistics[
vid
].rx_total_atomic);
rx = rte_atomic64_read(
rx = rte_atomic64_read(
- &dev_statistics[
device_fh
].rx_atomic);
+ &dev_statistics[
vid
].rx_atomic);
rx_dropped = rx_total - rx;
rx_ip_csum = rte_atomic64_read(
rx_dropped = rx_total - rx;
rx_ip_csum = rte_atomic64_read(
- &dev_statistics[
device_fh
].rx_bad_ip_csum);
+ &dev_statistics[
vid
].rx_bad_ip_csum);
rx_l4_csum = rte_atomic64_read(
rx_l4_csum = rte_atomic64_read(
- &dev_statistics[
device_fh
].rx_bad_l4_csum);
+ &dev_statistics[
vid
].rx_bad_l4_csum);
- printf("\nStatistics for device %
"PRIu32"
----------"
+ printf("\nStatistics for device %
d
----------"
"\nTX total: %"PRIu64""
"\nTX dropped: %"PRIu64""
"\nTX successful: %"PRIu64""
"\nTX total: %"PRIu64""
"\nTX dropped: %"PRIu64""
"\nTX successful: %"PRIu64""
@@
-1137,7
+1134,7
@@
print_stats(void)
"\nRX bad L4 csum: %"PRIu64""
"\nRX dropped: %"PRIu64""
"\nRX successful: %"PRIu64"",
"\nRX bad L4 csum: %"PRIu64""
"\nRX dropped: %"PRIu64""
"\nRX successful: %"PRIu64"",
-
device_fh
,
+
vid
,
tx_total,
tx_dropped,
tx,
tx_total,
tx_dropped,
tx,
@@
-1190,8
+1187,6
@@
main(int argc, char *argv[])
/* Get the number of physical ports. */
nb_ports = rte_eth_dev_count();
/* Get the number of physical ports. */
nb_ports = rte_eth_dev_count();
- if (nb_ports > RTE_MAX_ETHPORTS)
- nb_ports = RTE_MAX_ETHPORTS;
/*
* Update the global var NB_PORTS and global array PORTS
/*
* Update the global var NB_PORTS and global array PORTS
@@
-1220,9
+1215,6
@@
main(int argc, char *argv[])
for (queue_id = 0; queue_id < MAX_QUEUES + 1; queue_id++)
vpool_array[queue_id].pool = mbuf_pool;
for (queue_id = 0; queue_id < MAX_QUEUES + 1; queue_id++)
vpool_array[queue_id].pool = mbuf_pool;
- /* Set log level. */
- rte_set_log_level(LOG_LEVEL);
-
/* initialize all ports */
for (portid = 0; portid < nb_ports; portid++) {
/* skip ports that are not enabled */
/* initialize all ports */
for (portid = 0; portid < nb_ports; portid++) {
/* skip ports that are not enabled */
@@
-1251,7
+1243,7
@@
main(int argc, char *argv[])
snprintf(thread_name, RTE_MAX_THREAD_NAME_LEN, "print-stats");
ret = rte_thread_setname(tid, thread_name);
if (ret != 0)
snprintf(thread_name, RTE_MAX_THREAD_NAME_LEN, "print-stats");
ret = rte_thread_setname(tid, thread_name);
if (ret != 0)
- RTE_LOG(
ERR
, VHOST_CONFIG, "Cannot set print-stats name\n");
+ RTE_LOG(
DEBUG
, VHOST_CONFIG, "Cannot set print-stats name\n");
}
/* Launch all data cores. */
}
/* Launch all data cores. */
@@
-1262,7
+1254,7
@@
main(int argc, char *argv[])
rte_vhost_feature_disable(1ULL << VIRTIO_NET_F_MRG_RXBUF);
/* Register CUSE device to handle IOCTLs. */
rte_vhost_feature_disable(1ULL << VIRTIO_NET_F_MRG_RXBUF);
/* Register CUSE device to handle IOCTLs. */
- ret = rte_vhost_driver_register((char *)&dev_basename);
+ ret = rte_vhost_driver_register((char *)&dev_basename
, 0
);
if (ret != 0)
rte_exit(EXIT_FAILURE, "CUSE device setup failure.\n");
if (ret != 0)
rte_exit(EXIT_FAILURE, "CUSE device setup failure.\n");