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
examples: work only on defined lcores
[dpdk.git]
/
examples
/
link_status_interrupt
/
main.c
diff --git
a/examples/link_status_interrupt/main.c
b/examples/link_status_interrupt/main.c
index
aec84ea
..
d9a811b
100644
(file)
--- a/
examples/link_status_interrupt/main.c
+++ b/
examples/link_status_interrupt/main.c
@@
-76,8
+76,6
@@
#define RTE_LOGTYPE_LSI RTE_LOGTYPE_USER1
#define RTE_LOGTYPE_LSI RTE_LOGTYPE_USER1
-#define LSI_MAX_PORTS 32
-
#define MBUF_SIZE (2048 + sizeof(struct rte_mbuf) + RTE_PKTMBUF_HEADROOM)
#define NB_MBUF 8192
#define MBUF_SIZE (2048 + sizeof(struct rte_mbuf) + RTE_PKTMBUF_HEADROOM)
#define NB_MBUF 8192
@@
-101,9
+99,7
@@
#define TX_WTHRESH 0 /**< Default values of TX write-back threshold reg. */
#define MAX_PKT_BURST 32
#define TX_WTHRESH 0 /**< Default values of TX write-back threshold reg. */
#define MAX_PKT_BURST 32
-#define BURST_TX_DRAIN 200000ULL /* around 100us at 2 Ghz */
-
-#define SOCKET0 0
+#define BURST_TX_DRAIN_US 100 /* TX drain every ~100us */
/*
* Configurable number of RX/TX ring descriptors
/*
* Configurable number of RX/TX ring descriptors
@@
-114,7
+110,7
@@
static uint16_t nb_rxd = RTE_TEST_RX_DESC_DEFAULT;
static uint16_t nb_txd = RTE_TEST_TX_DESC_DEFAULT;
/* ethernet addresses of ports */
static uint16_t nb_txd = RTE_TEST_TX_DESC_DEFAULT;
/* ethernet addresses of ports */
-static struct ether_addr lsi_ports_eth_addr[
LSI_MAX_
PORTS];
+static struct ether_addr lsi_ports_eth_addr[
RTE_MAX_ETH
PORTS];
/* mask of enabled ports */
static uint32_t lsi_enabled_port_mask = 0;
/* mask of enabled ports */
static uint32_t lsi_enabled_port_mask = 0;
@@
-122,7
+118,7
@@
static uint32_t lsi_enabled_port_mask = 0;
static unsigned int lsi_rx_queue_per_lcore = 1;
/* destination port for L2 forwarding */
static unsigned int lsi_rx_queue_per_lcore = 1;
/* destination port for L2 forwarding */
-static unsigned lsi_dst_ports[
LSI_MAX_
PORTS] = {0};
+static unsigned lsi_dst_ports[
RTE_MAX_ETH
PORTS] = {0};
#define MAX_PKT_BURST 32
struct mbuf_table {
#define MAX_PKT_BURST 32
struct mbuf_table {
@@
-136,7
+132,7
@@
struct lcore_queue_conf {
unsigned n_rx_port;
unsigned rx_port_list[MAX_RX_QUEUE_PER_LCORE];
unsigned tx_queue_id;
unsigned n_rx_port;
unsigned rx_port_list[MAX_RX_QUEUE_PER_LCORE];
unsigned tx_queue_id;
- struct mbuf_table tx_mbufs[
LSI_MAX_
PORTS];
+ struct mbuf_table tx_mbufs[
RTE_MAX_ETH
PORTS];
} __rte_cache_aligned;
struct lcore_queue_conf lcore_queue_conf[RTE_MAX_LCORE];
} __rte_cache_aligned;
struct lcore_queue_conf lcore_queue_conf[RTE_MAX_LCORE];
@@
-184,7
+180,7
@@
struct lsi_port_statistics {
uint64_t rx;
uint64_t dropped;
} __rte_cache_aligned;
uint64_t rx;
uint64_t dropped;
} __rte_cache_aligned;
-struct lsi_port_statistics port_statistics[
LSI_MAX_
PORTS];
+struct lsi_port_statistics port_statistics[
RTE_MAX_ETH
PORTS];
/* A tsc-based timer responsible for triggering statistics printout */
#define TIMER_MILLISECOND 2000000ULL /* around 1ms at 2 Ghz */
/* A tsc-based timer responsible for triggering statistics printout */
#define TIMER_MILLISECOND 2000000ULL /* around 1ms at 2 Ghz */
@@
-211,7
+207,7
@@
print_stats(void)
printf("\nPort statistics ====================================");
printf("\nPort statistics ====================================");
- for (portid = 0; portid <
LSI_MAX_
PORTS; portid++) {
+ for (portid = 0; portid <
RTE_MAX_ETH
PORTS; portid++) {
/* skip ports that are not enabled */
if ((lsi_enabled_port_mask & (1 << portid)) == 0)
continue;
/* skip ports that are not enabled */
if ((lsi_enabled_port_mask & (1 << portid)) == 0)
continue;
@@
-321,11
+317,12
@@
lsi_main_loop(void)
struct rte_mbuf *pkts_burst[MAX_PKT_BURST];
struct rte_mbuf *m;
unsigned lcore_id;
struct rte_mbuf *pkts_burst[MAX_PKT_BURST];
struct rte_mbuf *m;
unsigned lcore_id;
- uint64_t prev_tsc = 0;
- uint64_t diff_tsc, cur_tsc, timer_tsc;
+ uint64_t prev_tsc, diff_tsc, cur_tsc, timer_tsc;
unsigned i, j, portid, nb_rx;
struct lcore_queue_conf *qconf;
unsigned i, j, portid, nb_rx;
struct lcore_queue_conf *qconf;
+ const uint64_t drain_tsc = (rte_get_tsc_hz() + US_PER_S - 1) / US_PER_S * BURST_TX_DRAIN_US;
+ prev_tsc = 0;
timer_tsc = 0;
lcore_id = rte_lcore_id();
timer_tsc = 0;
lcore_id = rte_lcore_id();
@@
-333,7
+330,7
@@
lsi_main_loop(void)
if (qconf->n_rx_port == 0) {
RTE_LOG(INFO, LSI, "lcore %u has nothing to do\n", lcore_id);
if (qconf->n_rx_port == 0) {
RTE_LOG(INFO, LSI, "lcore %u has nothing to do\n", lcore_id);
-
while(1)
;
+
return
;
}
RTE_LOG(INFO, LSI, "entering main loop on lcore %u\n", lcore_id);
}
RTE_LOG(INFO, LSI, "entering main loop on lcore %u\n", lcore_id);
@@
-353,11
+350,11
@@
lsi_main_loop(void)
* TX burst queue drain
*/
diff_tsc = cur_tsc - prev_tsc;
* TX burst queue drain
*/
diff_tsc = cur_tsc - prev_tsc;
- if (unlikely(diff_tsc >
BURST_TX_DRAIN
)) {
+ if (unlikely(diff_tsc >
drain_tsc
)) {
/* this could be optimized (use queueid instead of
* portid), but it is not called so often */
/* this could be optimized (use queueid instead of
* portid), but it is not called so often */
- for (portid = 0; portid <
LSI_MAX_
PORTS; portid++) {
+ for (portid = 0; portid <
RTE_MAX_ETH
PORTS; portid++) {
if (qconf->tx_mbufs[portid].len == 0)
continue;
lsi_send_burst(&lcore_queue_conf[lcore_id],
if (qconf->tx_mbufs[portid].len == 0)
continue;
lsi_send_burst(&lcore_queue_conf[lcore_id],
@@
-663,7
+660,7
@@
MAIN(int argc, char **argv)
sizeof(struct rte_pktmbuf_pool_private),
rte_pktmbuf_pool_init, NULL,
rte_pktmbuf_init, NULL,
sizeof(struct rte_pktmbuf_pool_private),
rte_pktmbuf_pool_init, NULL,
rte_pktmbuf_init, NULL,
-
SOCKET0
, 0);
+
rte_socket_id()
, 0);
if (lsi_pktmbuf_pool == NULL)
rte_panic("Cannot init mbuf pool\n");
if (lsi_pktmbuf_pool == NULL)
rte_panic("Cannot init mbuf pool\n");
@@
-678,8
+675,8
@@
MAIN(int argc, char **argv)
if (nb_ports == 0)
rte_panic("No Ethernet port - bye\n");
if (nb_ports == 0)
rte_panic("No Ethernet port - bye\n");
- if (nb_ports >
LSI_MAX_
PORTS)
- nb_ports =
LSI_MAX_
PORTS;
+ if (nb_ports >
RTE_MAX_ETH
PORTS)
+ nb_ports =
RTE_MAX_ETH
PORTS;
/*
* Each logical core is assigned a dedicated TX queue on each port.
/*
* Each logical core is assigned a dedicated TX queue on each port.
@@
-762,7
+759,7
@@
MAIN(int argc, char **argv)
/* init one RX queue */
fflush(stdout);
ret = rte_eth_rx_queue_setup(portid, 0, nb_rxd,
/* init one RX queue */
fflush(stdout);
ret = rte_eth_rx_queue_setup(portid, 0, nb_rxd,
-
SOCKET0
, &rx_conf,
+
rte_eth_dev_socket_id(portid)
, &rx_conf,
lsi_pktmbuf_pool);
if (ret < 0)
rte_exit(EXIT_FAILURE, "rte_eth_rx_queue_setup: err=%d, port=%u\n",
lsi_pktmbuf_pool);
if (ret < 0)
rte_exit(EXIT_FAILURE, "rte_eth_rx_queue_setup: err=%d, port=%u\n",
@@
-771,7
+768,7
@@
MAIN(int argc, char **argv)
/* init one TX queue logical core on each port */
fflush(stdout);
ret = rte_eth_tx_queue_setup(portid, 0, nb_txd,
/* init one TX queue logical core on each port */
fflush(stdout);
ret = rte_eth_tx_queue_setup(portid, 0, nb_txd,
-
SOCKET0
, &tx_conf);
+
rte_eth_dev_socket_id(portid)
, &tx_conf);
if (ret < 0)
rte_exit(EXIT_FAILURE, "rte_eth_tx_queue_setup: err=%d,port=%u\n",
ret, (unsigned) portid);
if (ret < 0)
rte_exit(EXIT_FAILURE, "rte_eth_tx_queue_setup: err=%d,port=%u\n",
ret, (unsigned) portid);