examples: minor changes
authorBruce Richardson <bruce.richardson@intel.com>
Tue, 11 Feb 2014 15:35:19 +0000 (15:35 +0000)
committerDavid Marchand <david.marchand@6wind.com>
Wed, 26 Feb 2014 09:47:59 +0000 (10:47 +0100)
A series of minor changes to example applications included in the
Intel DPDK 1.6 release.
* changes to NIC configuration flags, e.g. specifying RSS
* replacing local "DIM" macro with common "RTE_DIM" macro
* minor whitespace changes for alignment.

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
12 files changed:
examples/dpdk_qat/main.c
examples/ip_reassembly/main.c
examples/kni/main.c
examples/l2fwd/main.c
examples/l3fwd-power/main.c
examples/l3fwd-vf/main.c
examples/l3fwd/main.c
examples/load_balancer/init.c
examples/multi_process/symmetric_mp/main.c
examples/qos_meter/main.c
examples/quota_watermark/qw/main.c
examples/vmdq/main.c

index 19b3adf..cdf6832 100644 (file)
@@ -159,6 +159,7 @@ static uint16_t nb_lcore_params = sizeof(lcore_params_array_default) /
 
 static struct rte_eth_conf port_conf = {
        .rxmode = {
+               .mq_mode        = ETH_MQ_RX_RSS,
                .split_hdr_size = 0,
                .header_split   = 0, /**< Header Split disabled */
                .hw_ip_checksum = 1, /**< IP checksum offload enabled */
index f8e14fb..4880a5f 100644 (file)
@@ -223,7 +223,8 @@ static uint16_t nb_lcore_params = sizeof(lcore_params_array_default) /
 
 static struct rte_eth_conf port_conf = {
        .rxmode = {
-               .max_rx_pkt_len = ETHER_MAX_LEN,
+               .mq_mode        = ETH_MQ_RX_RSS,
+               .max_rx_pkt_len = ETHER_MAX_LEN,
                .split_hdr_size = 0,
                .header_split   = 0, /**< Header Split disabled */
                .hw_ip_checksum = 1, /**< IP checksum offload enabled */
index af59758..274990b 100644 (file)
@@ -243,8 +243,8 @@ signal_handler(int signum)
                return;
        }
 
-       /* When we receive a RTMIN signal, stop kni processing */
-       if (signum == SIGRTMIN{
+       /* When we receive a RTMIN or SIGINT signal, stop kni processing */
+       if (signum == SIGRTMIN || signum == SIGINT){
                printf("SIGRTMIN is received, and the KNI processing is "
                                                        "going to stop\n");
                rte_atomic32_inc(&kni_stop);
@@ -864,6 +864,7 @@ main(int argc, char** argv)
        signal(SIGUSR1, signal_handler);
        signal(SIGUSR2, signal_handler);
        signal(SIGRTMIN, signal_handler);
+       signal(SIGINT, signal_handler);
 
        /* Initialise EAL */
        ret = rte_eal_init(argc, argv);
index 65017bc..2d94366 100644 (file)
@@ -163,6 +163,11 @@ static const struct rte_eth_txconf tx_conf = {
        },
        .tx_free_thresh = 0, /* Use PMD default values */
        .tx_rs_thresh = 0, /* Use PMD default values */
+       /*
+       * As the example won't handle mult-segments and offload cases,
+       * set the flag by default.
+       */
+       .txq_flags = ETH_TXQ_FLAGS_NOMULTSEGS | ETH_TXQ_FLAGS_NOOFFLOADS,
 };
 
 struct rte_mempool * l2fwd_pktmbuf_pool = NULL;
index 3215631..219f802 100644 (file)
@@ -235,6 +235,7 @@ static uint16_t nb_lcore_params = sizeof(lcore_params_array_default) /
 
 static struct rte_eth_conf port_conf = {
        .rxmode = {
+               .mq_mode        = ETH_MQ_RX_RSS,
                .max_rx_pkt_len = ETHER_MAX_LEN,
                .split_hdr_size = 0,
                .header_split   = 0, /**< Header Split disabled */
index 199424e..fb811fa 100644 (file)
@@ -195,6 +195,7 @@ static uint16_t nb_lcore_params = sizeof(lcore_params_array_default) /
 
 static struct rte_eth_conf port_conf = {
        .rxmode = {
+               .mq_mode        = ETH_MQ_RX_RSS,
                .max_rx_pkt_len = ETHER_MAX_LEN,
                .split_hdr_size = 0,
                .header_split   = 0, /**< Header Split disabled */
index 50939c3..1ba4ca2 100755 (executable)
@@ -215,6 +215,7 @@ static uint16_t nb_lcore_params = sizeof(lcore_params_array_default) /
 
 static struct rte_eth_conf port_conf = {
        .rxmode = {
+               .mq_mode = ETH_MQ_RX_RSS,
                .max_rx_pkt_len = ETHER_MAX_LEN,
                .split_hdr_size = 0,
                .header_split   = 0, /**< Header Split disabled */
@@ -1505,6 +1506,7 @@ populate_ipv4_many_flow_into_table(const struct rte_hash* h,
                uint8_t b = (uint8_t) (((i/NUMBER_PORT_USED)/BYTE_VALUE_MAX)%BYTE_VALUE_MAX);
                uint8_t c = (uint8_t) ((i/NUMBER_PORT_USED)/(BYTE_VALUE_MAX*BYTE_VALUE_MAX));
                /* Create the ipv4 exact match flow */
+               memset(&entry, 0, sizeof(entry));
                switch (i & (NUMBER_PORT_USED -1)) {
                case 0:
                        entry = ipv4_l3fwd_route_array[0];
@@ -1548,6 +1550,7 @@ populate_ipv6_many_flow_into_table(const struct rte_hash* h,
                uint8_t b = (uint8_t) (((i/NUMBER_PORT_USED)/BYTE_VALUE_MAX)%BYTE_VALUE_MAX);
                uint8_t c = (uint8_t) ((i/NUMBER_PORT_USED)/(BYTE_VALUE_MAX*BYTE_VALUE_MAX));
                /* Create the ipv6 exact match flow */
+               memset(&entry, 0, sizeof(entry));
                switch (i & (NUMBER_PORT_USED - 1)) {
                case 0: entry = ipv6_l3fwd_route_array[0]; break;
                case 1: entry = ipv6_l3fwd_route_array[1]; break;
index 5b225c7..6a2f218 100644 (file)
@@ -76,6 +76,7 @@
 
 static struct rte_eth_conf port_conf = {
        .rxmode = {
+               .mq_mode        = ETH_MQ_RX_RSS,
                .split_hdr_size = 0,
                .header_split   = 0, /**< Header Split disabled */
                .hw_ip_checksum = 1, /**< IP checksum offload enabled */
index 6912618..12fa28d 100644 (file)
@@ -240,7 +240,7 @@ smp_port_init(uint8_t port, struct rte_mempool *mbuf_pool, uint16_t num_queues)
 {
        struct rte_eth_conf port_conf = {
                        .rxmode = {
-                               .mq_mode = ETH_MQ_RX_RSS,
+                               .mq_mode        = ETH_MQ_RX_RSS,
                                .split_hdr_size = 0,
                                .header_split   = 0, /**< Header Split disabled */
                                .hw_ip_checksum = 1, /**< IP checksum offload enabled */
@@ -284,7 +284,7 @@ smp_port_init(uint8_t port, struct rte_mempool *mbuf_pool, uint16_t num_queues)
        }
 
        for (q = 0; q < tx_rings; q ++) {
-               retval = rte_eth_tx_queue_setup(port, q, RX_RING_SIZE,
+               retval = rte_eth_tx_queue_setup(port, q, TX_RING_SIZE,
                                rte_eth_dev_socket_id(port), &tx_conf_default);
                if (retval < 0)
                        return retval;
index f5df448..bc76703 100755 (executable)
@@ -82,6 +82,7 @@ static struct rte_mempool *pool = NULL;
  ***/
 static struct rte_eth_conf port_conf = {
        .rxmode = {
+               .mq_mode        = ETH_MQ_RX_RSS,
                .max_rx_pkt_len = ETHER_MAX_LEN,
                .split_hdr_size = 0,
                .header_split   = 0,
@@ -150,7 +151,6 @@ struct rte_meter_trtcm_params app_trtcm_params[] = {
        {.cir = 1000000 * 46,  .pir = 1500000 * 46,  .cbs = 2048, .pbs = 2048},
 };
 
-#define DIM(a)   (sizeof (a) / sizeof ((a)[0]))
 #define APP_FLOWS_MAX  256
 
 FLOW_METER app_flows[APP_FLOWS_MAX];
@@ -160,7 +160,7 @@ app_configure_flow_table(void)
 {
        uint32_t i, j;
 
-       for (i = 0, j = 0; i < APP_FLOWS_MAX; i ++, j = (j + 1) % DIM(PARAMS)){
+       for (i = 0, j = 0; i < APP_FLOWS_MAX; i ++, j = (j + 1) % RTE_DIM(PARAMS)){
                FUNC_CONFIG(&app_flows[i], &PARAMS[j]);
        }
 }
index 88f5443..21e0fc7 100644 (file)
@@ -97,7 +97,7 @@ static void send_pause_frame(uint8_t port_id, uint16_t duration)
     ether_addr_copy(&mac_addr, &hdr->s_addr);
 
     void *tmp = &hdr->d_addr.addr_bytes[0];
-    *((uint64_t *)tmp) = 0x010000C28001;
+    *((uint64_t *)tmp) = 0x010000C28001ULL;
 
     hdr->ether_type = rte_cpu_to_be_16(ETHER_TYPE_FLOW_CONTROL);
 
index 6bd85c0..fac24aa 100644 (file)
@@ -130,6 +130,7 @@ static const struct rte_eth_rxconf rx_conf_default = {
                .hthresh = RX_HTHRESH,
                .wthresh = RX_WTHRESH,
        },
+       .rx_drop_en = 1,
 };
 
 /*
@@ -472,7 +473,7 @@ sighup_handler(int signum)
  * Main thread that does the work, reading from INPUT_PORT
  * and writing to OUTPUT_PORT
  */
-static  __attribute__((noreturn)) int
+static int
 lcore_main(__attribute__((__unused__)) void* dummy)
 {
        const uint16_t lcore_id = (uint16_t)rte_lcore_id();
@@ -504,6 +505,11 @@ lcore_main(__attribute__((__unused__)) void* dummy)
        printf("core %u(lcore %u) reading queues %i-%i\n", (unsigned)core_id, 
                (unsigned)lcore_id, startQueue, endQueue - 1);
 
+       if (startQueue == endQueue) {
+               printf("lcore %u has nothing to do\n", lcore_id);
+               return (0);
+       }
+
        for (;;) {
                struct rte_mbuf *buf[MAX_PKT_BURST];
                const uint16_t buf_size = sizeof(buf) / sizeof(buf[0]);