X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=examples%2Fl2fwd-event%2Fl2fwd_common.c;h=cf3d1b8aaf40bc29f2df8b39633aa14486b10425;hb=92d55afe0ffa8e98cee454fa2c6f60c6bec81f04;hp=0c069ec350aafce9377c515288f0c112f937f7d4;hpb=8b33aa7ee2bf8a4f0d48130fecacdab0fe7011f8;p=dpdk.git diff --git a/examples/l2fwd-event/l2fwd_common.c b/examples/l2fwd-event/l2fwd_common.c index 0c069ec350..cf3d1b8aaf 100644 --- a/examples/l2fwd-event/l2fwd_common.c +++ b/examples/l2fwd-event/l2fwd_common.c @@ -1,3 +1,7 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright(C) 2019 Marvell International Ltd. + */ + #include "l2fwd_common.h" int @@ -7,11 +11,10 @@ l2fwd_event_init_ports(struct l2fwd_resources *rsrc) uint16_t nb_txd = RTE_TEST_TX_DESC_DEFAULT; struct rte_eth_conf port_conf = { .rxmode = { - .max_rx_pkt_len = RTE_ETHER_MAX_LEN, .split_hdr_size = 0, }, .txmode = { - .mq_mode = ETH_MQ_TX_NONE, + .mq_mode = RTE_ETH_MQ_TX_NONE, }, }; uint16_t nb_ports_available = 0; @@ -19,9 +22,9 @@ l2fwd_event_init_ports(struct l2fwd_resources *rsrc) int ret; if (rsrc->event_mode) { - port_conf.rxmode.mq_mode = ETH_MQ_RX_RSS; + port_conf.rxmode.mq_mode = RTE_ETH_MQ_RX_RSS; port_conf.rx_adv_conf.rss_conf.rss_key = NULL; - port_conf.rx_adv_conf.rss_conf.rss_hf = ETH_RSS_IP; + port_conf.rx_adv_conf.rss_conf.rss_hf = RTE_ETH_RSS_IP; } /* Initialise each port */ @@ -46,13 +49,26 @@ l2fwd_event_init_ports(struct l2fwd_resources *rsrc) if (ret != 0) rte_panic("Error during getting device (port %u) info: %s\n", port_id, strerror(-ret)); - if (dev_info.tx_offload_capa & DEV_TX_OFFLOAD_MBUF_FAST_FREE) + local_port_conf.rx_adv_conf.rss_conf.rss_hf &= + dev_info.flow_type_rss_offloads; + if (local_port_conf.rx_adv_conf.rss_conf.rss_hf != + port_conf.rx_adv_conf.rss_conf.rss_hf) { + printf("Port %u modified RSS hash function based on hardware support," + "requested:%#"PRIx64" configured:%#"PRIx64"", + port_id, + port_conf.rx_adv_conf.rss_conf.rss_hf, + local_port_conf.rx_adv_conf.rss_conf.rss_hf); + } + + if (dev_info.tx_offload_capa & RTE_ETH_TX_OFFLOAD_MBUF_FAST_FREE) local_port_conf.txmode.offloads |= - DEV_TX_OFFLOAD_MBUF_FAST_FREE; + RTE_ETH_TX_OFFLOAD_MBUF_FAST_FREE; + /* Configure RX and TX queue. 8< */ ret = rte_eth_dev_configure(port_id, 1, 1, &local_port_conf); if (ret < 0) rte_panic("Cannot configure device: err=%d, port=%u\n", ret, port_id); + /* >8 End of configuration RX and TX queue. */ ret = rte_eth_dev_adjust_nb_rx_tx_desc(port_id, &nb_rxd, &nb_txd); @@ -66,6 +82,7 @@ l2fwd_event_init_ports(struct l2fwd_resources *rsrc) fflush(stdout); rxq_conf = dev_info.default_rxconf; rxq_conf.offloads = local_port_conf.rxmode.offloads; + /* Using lcore to poll one or several ports. 8< */ ret = rte_eth_rx_queue_setup(port_id, 0, nb_rxd, rte_eth_dev_socket_id(port_id), &rxq_conf, @@ -74,7 +91,9 @@ l2fwd_event_init_ports(struct l2fwd_resources *rsrc) rte_panic("rte_eth_rx_queue_setup:err=%d, port=%u\n", ret, port_id); - /* init one TX queue on each port */ + /* >8 End of using lcore to poll one or several ports. */ + + /* Init one TX queue on each port. 8< */ fflush(stdout); txq_conf = dev_info.default_txconf; txq_conf.offloads = local_port_conf.txmode.offloads; @@ -84,17 +103,13 @@ l2fwd_event_init_ports(struct l2fwd_resources *rsrc) if (ret < 0) rte_panic("rte_eth_tx_queue_setup:err=%d, port=%u\n", ret, port_id); + /* >8 End of init one TX queue on each port. */ rte_eth_promiscuous_enable(port_id); - printf("Port %u,MAC address: %02X:%02X:%02X:%02X:%02X:%02X\n\n", + printf("Port %u,MAC address: " RTE_ETHER_ADDR_PRT_FMT "\n\n", port_id, - rsrc->eth_addr[port_id].addr_bytes[0], - rsrc->eth_addr[port_id].addr_bytes[1], - rsrc->eth_addr[port_id].addr_bytes[2], - rsrc->eth_addr[port_id].addr_bytes[3], - rsrc->eth_addr[port_id].addr_bytes[4], - rsrc->eth_addr[port_id].addr_bytes[5]); + RTE_ETHER_ADDR_BYTES(&rsrc->eth_addr[port_id])); } return nb_ports_available;