git.droids-corp.org
/
dpdk.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
eal/x86: include common header
[dpdk.git]
/
examples
/
ipv4_multicast
/
main.c
diff --git
a/examples/ipv4_multicast/main.c
b/examples/ipv4_multicast/main.c
index
af59d2d
..
1b6feae
100644
(file)
--- a/
examples/ipv4_multicast/main.c
+++ b/
examples/ipv4_multicast/main.c
@@
-49,7
+49,6
@@
#include <rte_memcpy.h>
#include <rte_memzone.h>
#include <rte_eal.h>
#include <rte_memcpy.h>
#include <rte_memzone.h>
#include <rte_eal.h>
-#include <rte_per_lcore.h>
#include <rte_launch.h>
#include <rte_atomic.h>
#include <rte_cycles.h>
#include <rte_launch.h>
#include <rte_atomic.h>
#include <rte_cycles.h>
@@
-117,7
+116,7
@@
static struct ether_addr ports_eth_addr[MAX_PORTS];
/* mask of enabled ports */
static uint32_t enabled_port_mask = 0;
/* mask of enabled ports */
static uint32_t enabled_port_mask = 0;
-static uint
8_t nb_ports = 0
;
+static uint
16_t nb_ports
;
static int rx_queue_per_lcore = 1;
static int rx_queue_per_lcore = 1;
@@
-137,7
+136,7
@@
struct lcore_queue_conf {
} __rte_cache_aligned;
static struct lcore_queue_conf lcore_queue_conf[RTE_MAX_LCORE];
} __rte_cache_aligned;
static struct lcore_queue_conf lcore_queue_conf[RTE_MAX_LCORE];
-static
const
struct rte_eth_conf port_conf = {
+static struct rte_eth_conf port_conf = {
.rxmode = {
.max_rx_pkt_len = JUMBO_FRAME_MAX_SIZE,
.split_hdr_size = 0,
.rxmode = {
.max_rx_pkt_len = JUMBO_FRAME_MAX_SIZE,
.split_hdr_size = 0,
@@
-196,7
+195,7
@@
static struct mcast_group_params mcast_group_table[] = {
/* Send burst of packets on an output interface */
static void
/* Send burst of packets on an output interface */
static void
-send_burst(struct lcore_queue_conf *qconf, uint
8
_t port)
+send_burst(struct lcore_queue_conf *qconf, uint
16
_t port)
{
struct rte_mbuf **m_table;
uint16_t n, queueid;
{
struct rte_mbuf **m_table;
uint16_t n, queueid;
@@
-313,7
+312,7
@@
mcast_out_pkt(struct rte_mbuf *pkt, int use_clone)
*/
static inline void
mcast_send_pkt(struct rte_mbuf *pkt, struct ether_addr *dest_addr,
*/
static inline void
mcast_send_pkt(struct rte_mbuf *pkt, struct ether_addr *dest_addr,
- struct lcore_queue_conf *qconf, uint
8
_t port)
+ struct lcore_queue_conf *qconf, uint
16
_t port)
{
struct ether_hdr *ethdr;
uint16_t len;
{
struct ether_hdr *ethdr;
uint16_t len;
@@
-344,7
+343,7
@@
mcast_forward(struct rte_mbuf *m, struct lcore_queue_conf *qconf)
struct ipv4_hdr *iphdr;
uint32_t dest_addr, port_mask, port_num, use_clone;
int32_t hash;
struct ipv4_hdr *iphdr;
uint32_t dest_addr, port_mask, port_num, use_clone;
int32_t hash;
- uint
8
_t port;
+ uint
16
_t port;
union {
uint64_t as_int;
struct ether_addr as_addr;
union {
uint64_t as_int;
struct ether_addr as_addr;
@@
-408,7
+407,7
@@
static inline void
send_timeout_burst(struct lcore_queue_conf *qconf)
{
uint64_t cur_tsc;
send_timeout_burst(struct lcore_queue_conf *qconf)
{
uint64_t cur_tsc;
- uint
8
_t portid;
+ uint
16
_t portid;
const uint64_t drain_tsc = (rte_get_tsc_hz() + US_PER_S - 1) / US_PER_S * BURST_TX_DRAIN_US;
cur_tsc = rte_rdtsc();
const uint64_t drain_tsc = (rte_get_tsc_hz() + US_PER_S - 1) / US_PER_S * BURST_TX_DRAIN_US;
cur_tsc = rte_rdtsc();
@@
-429,7
+428,7
@@
main_loop(__rte_unused void *dummy)
struct rte_mbuf *pkts_burst[MAX_PKT_BURST];
unsigned lcore_id;
int i, j, nb_rx;
struct rte_mbuf *pkts_burst[MAX_PKT_BURST];
unsigned lcore_id;
int i, j, nb_rx;
- uint
8
_t portid;
+ uint
16
_t portid;
struct lcore_queue_conf *qconf;
lcore_id = rte_lcore_id();
struct lcore_queue_conf *qconf;
lcore_id = rte_lcore_id();
@@
-449,7
+448,7
@@
main_loop(__rte_unused void *dummy)
portid = qconf->rx_queue_list[i];
RTE_LOG(INFO, IPv4_MULTICAST, " -- lcoreid=%u portid=%d\n",
portid = qconf->rx_queue_list[i];
RTE_LOG(INFO, IPv4_MULTICAST, " -- lcoreid=%u portid=%d\n",
- lcore_id,
(int)
portid);
+ lcore_id, portid);
}
while (1) {
}
while (1) {
@@
-611,11
+610,12
@@
init_mcast_hash(void)
/* Check the link status of all ports in up to 9s, and print them finally */
static void
/* Check the link status of all ports in up to 9s, and print them finally */
static void
-check_all_ports_link_status(uint
8
_t port_num, uint32_t port_mask)
+check_all_ports_link_status(uint
16
_t port_num, uint32_t port_mask)
{
#define CHECK_INTERVAL 100 /* 100ms */
#define MAX_CHECK_TIME 90 /* 9s (90 * 100ms) in total */
{
#define CHECK_INTERVAL 100 /* 100ms */
#define MAX_CHECK_TIME 90 /* 9s (90 * 100ms) in total */
- uint8_t portid, count, all_ports_up, print_flag = 0;
+ uint16_t portid;
+ uint8_t count, all_ports_up, print_flag = 0;
struct rte_eth_link link;
printf("\nChecking link status");
struct rte_eth_link link;
printf("\nChecking link status");
@@
-630,14
+630,13
@@
check_all_ports_link_status(uint8_t port_num, uint32_t port_mask)
/* print link status if flag set */
if (print_flag == 1) {
if (link.link_status)
/* print link status if flag set */
if (print_flag == 1) {
if (link.link_status)
- printf(
"Port %d Link Up - speed %u "
-
"Mbps - %s\n", (uint8_t)portid
,
-
(unsigned)
link.link_speed,
+ printf(
+
"Port%d Link Up. Speed %u Mbps - %s\n"
,
+
portid,
link.link_speed,
(link.link_duplex == ETH_LINK_FULL_DUPLEX) ?
("full-duplex") : ("half-duplex\n"));
else
(link.link_duplex == ETH_LINK_FULL_DUPLEX) ?
("full-duplex") : ("half-duplex\n"));
else
- printf("Port %d Link Down\n",
- (uint8_t)portid);
+ printf("Port %d Link Down\n", portid);
continue;
}
/* clear all_ports_up flag if any link down */
continue;
}
/* clear all_ports_up flag if any link down */
@@
-674,7
+673,7
@@
main(int argc, char **argv)
uint16_t queueid;
unsigned lcore_id = 0, rx_lcore_id = 0;
uint32_t n_tx_queue, nb_lcores;
uint16_t queueid;
unsigned lcore_id = 0, rx_lcore_id = 0;
uint32_t n_tx_queue, nb_lcores;
- uint
8
_t portid;
+ uint
16
_t portid;
/* init EAL */
ret = rte_eal_init(argc, argv);
/* init EAL */
ret = rte_eal_init(argc, argv);
@@
-725,6
+724,11
@@
main(int argc, char **argv)
qconf = &lcore_queue_conf[rx_lcore_id];
qconf = &lcore_queue_conf[rx_lcore_id];
+ /* limit the frame size to the maximum supported by NIC */
+ rte_eth_dev_info_get(portid, &dev_info);
+ port_conf.rxmode.max_rx_pkt_len = RTE_MIN(
+ dev_info.max_rx_pktlen, port_conf.rxmode.max_rx_pkt_len);
+
/* get the lcore_id for this port */
while (rte_lcore_is_enabled(rx_lcore_id) == 0 ||
qconf->n_rx_queue == (unsigned)rx_queue_per_lcore) {
/* get the lcore_id for this port */
while (rte_lcore_is_enabled(rx_lcore_id) == 0 ||
qconf->n_rx_queue == (unsigned)rx_queue_per_lcore) {
@@
-752,6
+756,13
@@
main(int argc, char **argv)
rte_exit(EXIT_FAILURE, "Cannot configure device: err=%d, port=%d\n",
ret, portid);
rte_exit(EXIT_FAILURE, "Cannot configure device: err=%d, port=%d\n",
ret, portid);
+ ret = rte_eth_dev_adjust_nb_rx_tx_desc(portid, &nb_rxd,
+ &nb_txd);
+ if (ret < 0)
+ rte_exit(EXIT_FAILURE,
+ "Cannot adjust number of descriptors: err=%d, port=%d\n",
+ ret, portid);
+
rte_eth_macaddr_get(portid, &ports_eth_addr[portid]);
print_ethaddr(" Address:", &ports_eth_addr[portid]);
printf(", ");
rte_eth_macaddr_get(portid, &ports_eth_addr[portid]);
print_ethaddr(" Address:", &ports_eth_addr[portid]);
printf(", ");
@@
-777,7
+788,6
@@
main(int argc, char **argv)
printf("txq=%u,%hu ", lcore_id, queueid);
fflush(stdout);
printf("txq=%u,%hu ", lcore_id, queueid);
fflush(stdout);
- rte_eth_dev_info_get(portid, &dev_info);
txconf = &dev_info.default_txconf;
txconf->txq_flags = 0;
ret = rte_eth_tx_queue_setup(portid, queueid, nb_txd,
txconf = &dev_info.default_txconf;
txconf->txq_flags = 0;
ret = rte_eth_tx_queue_setup(portid, queueid, nb_txd,