X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fnet%2Fnfb%2Fnfb_rx.c;h=d97179f81831ce5d6b9f1e6fe573fbb189146177;hb=ddae0440353f853fccce74a48c5658b5eb88147b;hp=9147b00b0aef27d0534ed7b00c8abed8ce84a222;hpb=6435f9a0ac222ad8a1c53a2a039891c6f46cadb3;p=dpdk.git diff --git a/drivers/net/nfb/nfb_rx.c b/drivers/net/nfb/nfb_rx.c index 9147b00b0a..d97179f818 100644 --- a/drivers/net/nfb/nfb_rx.c +++ b/drivers/net/nfb/nfb_rx.c @@ -4,9 +4,51 @@ * All rights reserved. */ +#include + #include "nfb_rx.h" #include "nfb.h" +static int +timestamp_check_handler(__rte_unused const char *key, + const char *value, __rte_unused void *opaque) +{ + if (strcmp(value, "1")) + return -1; + + return 0; +} + + +static int +nfb_check_timestamp(struct rte_devargs *devargs) +{ + struct rte_kvargs *kvlist; + + if (devargs == NULL) + return 0; + + kvlist = rte_kvargs_parse(devargs->args, NULL); + if (kvlist == NULL) + return 0; + + if (!rte_kvargs_count(kvlist, TIMESTAMP_ARG)) { + rte_kvargs_free(kvlist); + return 0; + } + /* Timestamps are enabled when there is + * key-value pair: enable_timestamp=1 + */ + if (rte_kvargs_process(kvlist, TIMESTAMP_ARG, + timestamp_check_handler, NULL) < 0) { + rte_kvargs_free(kvlist); + return 0; + } + rte_kvargs_free(kvlist); + + return 1; +} + int nfb_eth_rx_queue_start(struct rte_eth_dev *dev, uint16_t rxq_id) { @@ -70,6 +112,8 @@ nfb_eth_rx_queue_setup(struct rte_eth_dev *dev, return -ENOMEM; } + rxq->flags = 0; + ret = nfb_eth_rx_queue_init(internals->nfb, rx_queue_id, dev->data->port_id, @@ -81,6 +125,9 @@ nfb_eth_rx_queue_setup(struct rte_eth_dev *dev, else rte_free(rxq); + if (nfb_check_timestamp(dev->device->devargs)) + rxq->flags |= NFB_TIMESTAMP_FLAG; + return ret; }