X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fnet%2Ftap%2Frte_eth_tap.c;h=e44de027d705fa7c10f756cd0c00f9477bb46087;hb=d82094b7eac559f4014b5faec9d7a22227c3449c;hp=206a0d6946f7787b8ed0b3f439c20aecd5b69c6f;hpb=050fe6e9ff970ff92d842912136be8f9f52e171f;p=dpdk.git diff --git a/drivers/net/tap/rte_eth_tap.c b/drivers/net/tap/rte_eth_tap.c index 206a0d6946..e44de027d7 100644 --- a/drivers/net/tap/rte_eth_tap.c +++ b/drivers/net/tap/rte_eth_tap.c @@ -875,7 +875,9 @@ tap_rx_queue_setup(struct rte_eth_dev *dev, struct pmd_internals *internals = dev->data->dev_private; struct rx_queue *rxq = &internals->rxq[rx_queue_id]; struct rte_mbuf **tmp = &rxq->pool; - struct iovec (*iovecs)[nb_rx_desc + 1]; + long iov_max = sysconf(_SC_IOV_MAX); + uint16_t nb_desc = RTE_MIN(nb_rx_desc, iov_max - 1); + struct iovec (*iovecs)[nb_desc + 1]; int data_off = RTE_PKTMBUF_HEADROOM; int ret = 0; int fd; @@ -891,13 +893,13 @@ tap_rx_queue_setup(struct rte_eth_dev *dev, rxq->mp = mp; rxq->trigger_seen = 1; /* force initial burst */ rxq->in_port = dev->data->port_id; - rxq->nb_rx_desc = nb_rx_desc; + rxq->nb_rx_desc = nb_desc; iovecs = rte_zmalloc_socket(dev->data->name, sizeof(*iovecs), 0, socket_id); if (!iovecs) { RTE_LOG(WARNING, PMD, "%s: Couldn't allocate %d RX descriptors\n", - dev->data->name, nb_rx_desc); + dev->data->name, nb_desc); return -ENOMEM; } rxq->iovecs = iovecs; @@ -911,7 +913,7 @@ tap_rx_queue_setup(struct rte_eth_dev *dev, (*rxq->iovecs)[0].iov_len = sizeof(struct tun_pi); (*rxq->iovecs)[0].iov_base = &rxq->pi; - for (i = 1; i <= nb_rx_desc; i++) { + for (i = 1; i <= nb_desc; i++) { *tmp = rte_pktmbuf_alloc(rxq->mp); if (!*tmp) { RTE_LOG(WARNING, PMD, @@ -1386,4 +1388,7 @@ static struct rte_vdev_driver pmd_tap_drv = { }; RTE_PMD_REGISTER_VDEV(net_tap, pmd_tap_drv); RTE_PMD_REGISTER_ALIAS(net_tap, eth_tap); -RTE_PMD_REGISTER_PARAM_STRING(net_tap, "iface=,speed=N"); +RTE_PMD_REGISTER_PARAM_STRING(net_tap, + ETH_TAP_IFACE_ARG "= " + ETH_TAP_SPEED_ARG "= " + ETH_TAP_REMOTE_ARG "=");