X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=examples%2Fqos_sched%2Finit.c;h=004ac54e7845645d6bb60d4f64ee5094ca8ca1de;hb=253624f46c9d34e6970ffa0dd709bb30399547fd;hp=9d8c8b09168787e2911341ba6bc7e7b6bec273ab;hpb=3031749c2df04a63cdcef186dcce3781e61436e8;p=dpdk.git diff --git a/examples/qos_sched/init.c b/examples/qos_sched/init.c old mode 100755 new mode 100644 index 9d8c8b0916..004ac54e78 --- a/examples/qos_sched/init.c +++ b/examples/qos_sched/init.c @@ -42,6 +42,7 @@ #include #include #include +#include #include "main.h" #include "cfg_file.h" @@ -91,7 +92,7 @@ static const struct rte_eth_conf port_conf = { .hw_ip_checksum = 0, /**< IP checksum offload disabled */ .hw_vlan_filter = 0, /**< VLAN filtering disabled */ .jumbo_frame = 0, /**< Jumbo Frame Support disabled */ - .hw_strip_crc = 0, /**< CRC stripped by hardware */ + .hw_strip_crc = 1, /**< CRC stripped by hardware */ }, .txmode = { .mq_mode = ETH_DCB_NONE, @@ -99,12 +100,14 @@ static const struct rte_eth_conf port_conf = { }; static int -app_init_port(uint8_t portid, struct rte_mempool *mp) +app_init_port(uint16_t portid, struct rte_mempool *mp) { int ret; struct rte_eth_link link; struct rte_eth_rxconf rx_conf; struct rte_eth_txconf tx_conf; + uint16_t rx_size; + uint16_t tx_size; /* check if port already initialized (multistream configuration) */ if (app_inited_port_mask & (1u << portid)) @@ -124,35 +127,48 @@ app_init_port(uint8_t portid, struct rte_mempool *mp) tx_conf.txq_flags = ETH_TXQ_FLAGS_NOMULTSEGS | ETH_TXQ_FLAGS_NOOFFLOADS; /* init port */ - RTE_LOG(INFO, APP, "Initializing port %hu... ", portid); + RTE_LOG(INFO, APP, "Initializing port %"PRIu16"... ", portid); fflush(stdout); ret = rte_eth_dev_configure(portid, 1, 1, &port_conf); if (ret < 0) - rte_exit(EXIT_FAILURE, "Cannot configure device: err=%d, port=%hu\n", - ret, portid); + rte_exit(EXIT_FAILURE, + "Cannot configure device: err=%d, port=%u\n", + ret, portid); + + rx_size = ring_conf.rx_size; + tx_size = ring_conf.tx_size; + ret = rte_eth_dev_adjust_nb_rx_tx_desc(portid, &rx_size, &tx_size); + if (ret < 0) + rte_exit(EXIT_FAILURE, + "rte_eth_dev_adjust_nb_rx_tx_desc: err=%d,port=%u\n", + ret, portid); + ring_conf.rx_size = rx_size; + ring_conf.tx_size = tx_size; /* init one RX queue */ fflush(stdout); ret = rte_eth_rx_queue_setup(portid, 0, (uint16_t)ring_conf.rx_size, rte_eth_dev_socket_id(portid), &rx_conf, mp); if (ret < 0) - rte_exit(EXIT_FAILURE, "rte_eth_tx_queue_setup: err=%d, port=%hu\n", - ret, portid); + rte_exit(EXIT_FAILURE, + "rte_eth_tx_queue_setup: err=%d, port=%u\n", + ret, portid); /* init one TX queue */ fflush(stdout); ret = rte_eth_tx_queue_setup(portid, 0, (uint16_t)ring_conf.tx_size, rte_eth_dev_socket_id(portid), &tx_conf); if (ret < 0) - rte_exit(EXIT_FAILURE, "rte_eth_tx_queue_setup: err=%d, " - "port=%hu queue=%d\n", - ret, portid, 0); + rte_exit(EXIT_FAILURE, + "rte_eth_tx_queue_setup: err=%d, port=%u queue=%d\n", + ret, portid, 0); /* Start device */ ret = rte_eth_dev_start(portid); if (ret < 0) - rte_exit(EXIT_FAILURE, "rte_pmd_port_start: err=%d, port=%hu\n", - ret, portid); + rte_exit(EXIT_FAILURE, + "rte_pmd_port_start: err=%d, port=%u\n", + ret, portid); printf("done: "); @@ -245,11 +261,11 @@ app_init_sched_port(uint32_t portid, uint32_t socketid) uint32_t pipe, subport; int err; - rte_eth_link_get((uint8_t)portid, &link); + rte_eth_link_get(portid, &link); port_params.socket = socketid; port_params.rate = (uint64_t) link.link_speed * 1000 * 1000 / 8; - rte_snprintf(port_name, sizeof(port_name), "port_%d", portid); + snprintf(port_name, sizeof(port_name), "port_%d", portid); port_params.name = port_name; port = rte_sched_port_config(&port_params); @@ -285,16 +301,15 @@ app_load_cfg_profile(const char *profile) { if (profile == NULL) return 0; - - struct cfg_file *cfg_file = cfg_load(profile, 0); - if (cfg_file == NULL) + struct rte_cfgfile *file = rte_cfgfile_load(profile, 0); + if (file == NULL) rte_exit(EXIT_FAILURE, "Cannot load configuration profile %s\n", profile); - cfg_load_port(cfg_file, &port_params); - cfg_load_subport(cfg_file, subport_params); - cfg_load_pipe(cfg_file, pipe_profiles); + cfg_load_port(file, &port_params); + cfg_load_subport(file, subport_params); + cfg_load_pipe(file, pipe_profiles); - cfg_close(cfg_file); + rte_cfgfile_close(file); return 0; } @@ -305,9 +320,6 @@ int app_init(void) char ring_name[MAX_NAME_LEN]; char pool_name[MAX_NAME_LEN]; - if (rte_eal_pci_probe() < 0) - rte_exit(EXIT_FAILURE, "Cannot probe PCI\n"); - if (rte_eth_dev_count() == 0) rte_exit(EXIT_FAILURE, "No Ethernet port - bye\n"); @@ -320,7 +332,7 @@ int app_init(void) uint32_t socket = rte_lcore_to_socket_id(qos_conf[i].rx_core); struct rte_ring *ring; - rte_snprintf(ring_name, MAX_NAME_LEN, "ring-%u-%u", i, qos_conf[i].rx_core); + snprintf(ring_name, MAX_NAME_LEN, "ring-%u-%u", i, qos_conf[i].rx_core); ring = rte_ring_lookup(ring_name); if (ring == NULL) qos_conf[i].rx_ring = rte_ring_create(ring_name, ring_conf.ring_size, @@ -328,7 +340,7 @@ int app_init(void) else qos_conf[i].rx_ring = ring; - rte_snprintf(ring_name, MAX_NAME_LEN, "ring-%u-%u", i, qos_conf[i].tx_core); + snprintf(ring_name, MAX_NAME_LEN, "ring-%u-%u", i, qos_conf[i].tx_core); ring = rte_ring_lookup(ring_name); if (ring == NULL) qos_conf[i].tx_ring = rte_ring_create(ring_name, ring_conf.ring_size, @@ -338,14 +350,11 @@ int app_init(void) /* create the mbuf pools for each RX Port */ - rte_snprintf(pool_name, MAX_NAME_LEN, "mbuf_pool%u", i); - qos_conf[i].mbuf_pool = rte_mempool_create(pool_name, mp_size, MBUF_SIZE, - burst_conf.rx_burst * 4, - sizeof(struct rte_pktmbuf_pool_private), - rte_pktmbuf_pool_init, NULL, - rte_pktmbuf_init, NULL, - rte_eth_dev_socket_id(qos_conf[i].rx_port), - 0); + snprintf(pool_name, MAX_NAME_LEN, "mbuf_pool%u", i); + qos_conf[i].mbuf_pool = rte_pktmbuf_pool_create(pool_name, + mp_size, burst_conf.rx_burst * 4, 0, + RTE_MBUF_DEFAULT_BUF_SIZE, + rte_eth_dev_socket_id(qos_conf[i].rx_port)); if (qos_conf[i].mbuf_pool == NULL) rte_exit(EXIT_FAILURE, "Cannot init mbuf pool for socket %u\n", i);