* [dpdk-dev] [PATCH 2/4] examples/l3fwd-power: fix the timer for any platform freq
2017-12-12 10:08 [dpdk-dev] [PATCH 1/4] examples/l3fwd-power: fix non Rx intr supported platform Nikhil Agarwal
@ 2017-12-12 10:08 ` Nikhil Agarwal
2017-12-13 14:22 ` Hunt, David
2017-12-12 10:08 ` [dpdk-dev] [PATCH 3/4] examples/l3fwd-power: replace desc done with Rx queue count Nikhil Agarwal
` (2 subsequent siblings)
3 siblings, 1 reply; 9+ messages in thread
From: Nikhil Agarwal @ 2017-12-12 10:08 UTC (permalink / raw)
To: dev; +Cc: david.hunt, nikhil.agarwal, hemant.agrawal, stable
The code assumes that the platform frequency is 2GHz.
This patch add support for dynamically detecting platform frequence.
Fixes: d7937e2e3d12 ("power: initial import")
Cc: stable@dpdk.org
Signed-off-by: Nikhil Agarwal <nikhil.agarwal@linaro.org>
---
examples/l3fwd-power/main.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/examples/l3fwd-power/main.c b/examples/l3fwd-power/main.c
index d335b0d..50c3702 100644
--- a/examples/l3fwd-power/main.c
+++ b/examples/l3fwd-power/main.c
@@ -79,8 +79,6 @@
#define MIN_ZERO_POLL_COUNT 10
-/* around 100ms at 2 Ghz */
-#define TIMER_RESOLUTION_CYCLES 200000000ULL
/* 100 ms interval */
#define TIMER_NUMBER_PER_SECOND 10
/* 100000 us */
@@ -875,7 +873,7 @@ main_loop(__attribute__((unused)) void *dummy)
{
struct rte_mbuf *pkts_burst[MAX_PKT_BURST];
unsigned lcore_id;
- uint64_t prev_tsc, diff_tsc, cur_tsc;
+ uint64_t prev_tsc, diff_tsc, cur_tsc, tim_res_tsc, hz;
uint64_t prev_tsc_power = 0, cur_tsc_power, diff_tsc_power;
int i, j, nb_rx;
uint8_t queueid;
@@ -890,6 +888,8 @@ main_loop(__attribute__((unused)) void *dummy)
const uint64_t drain_tsc = (rte_get_tsc_hz() + US_PER_S - 1) / US_PER_S * BURST_TX_DRAIN_US;
prev_tsc = 0;
+ hz = rte_get_timer_hz();
+ tim_res_tsc = hz/TIMER_NUMBER_PER_SECOND;
lcore_id = rte_lcore_id();
qconf = &lcore_conf[lcore_id];
@@ -935,7 +935,7 @@ main_loop(__attribute__((unused)) void *dummy)
}
diff_tsc_power = cur_tsc_power - prev_tsc_power;
- if (diff_tsc_power > TIMER_RESOLUTION_CYCLES) {
+ if (diff_tsc_power > tim_res_tsc) {
rte_timer_manage();
prev_tsc_power = cur_tsc_power;
}
--
2.7.4
^ permalink raw reply [flat|nested] 9+ messages in thread
* [dpdk-dev] [PATCH 3/4] examples/l3fwd-power: replace desc done with Rx queue count
2017-12-12 10:08 [dpdk-dev] [PATCH 1/4] examples/l3fwd-power: fix non Rx intr supported platform Nikhil Agarwal
2017-12-12 10:08 ` [dpdk-dev] [PATCH 2/4] examples/l3fwd-power: fix the timer for any platform freq Nikhil Agarwal
@ 2017-12-12 10:08 ` Nikhil Agarwal
2017-12-13 14:22 ` Hunt, David
2017-12-12 10:08 ` [dpdk-dev] [PATCH 4/4] examples/l3fwd-power: disable Lsc interrupts Nikhil Agarwal
2017-12-13 14:21 ` [dpdk-dev] [PATCH 1/4] examples/l3fwd-power: fix non Rx intr supported platform Hunt, David
3 siblings, 1 reply; 9+ messages in thread
From: Nikhil Agarwal @ 2017-12-12 10:08 UTC (permalink / raw)
To: dev; +Cc: david.hunt, nikhil.agarwal, hemant.agrawal
HW queue based platforms may not support descriptor done API.
This patch changes the usages to rx_queue_count API, which
is more generic.
Signed-off-by: Nikhil Agarwal <nikhil.agarwal@linaro.org>
---
examples/l3fwd-power/main.c | 10 ++++------
1 file changed, 4 insertions(+), 6 deletions(-)
diff --git a/examples/l3fwd-power/main.c b/examples/l3fwd-power/main.c
index 50c3702..4ddd04c 100644
--- a/examples/l3fwd-power/main.c
+++ b/examples/l3fwd-power/main.c
@@ -755,6 +755,7 @@ power_freq_scaleup_heuristic(unsigned lcore_id,
uint16_t port_id,
uint16_t queue_id)
{
+ uint32_t rxq_count = rte_eth_rx_queue_count(port_id, queue_id);
/**
* HW Rx queue size is 128 by default, Rx burst read at maximum 32 entries
* per iteration
@@ -766,15 +767,12 @@ power_freq_scaleup_heuristic(unsigned lcore_id,
#define FREQ_UP_TREND2_ACC 100
#define FREQ_UP_THRESHOLD 10000
- if (likely(rte_eth_rx_descriptor_done(port_id, queue_id,
- FREQ_GEAR3_RX_PACKET_THRESHOLD) > 0)) {
+ if (likely(rxq_count > FREQ_GEAR3_RX_PACKET_THRESHOLD)) {
stats[lcore_id].trend = 0;
return FREQ_HIGHEST;
- } else if (likely(rte_eth_rx_descriptor_done(port_id, queue_id,
- FREQ_GEAR2_RX_PACKET_THRESHOLD) > 0))
+ } else if (likely(rxq_count > FREQ_GEAR2_RX_PACKET_THRESHOLD))
stats[lcore_id].trend += FREQ_UP_TREND2_ACC;
- else if (likely(rte_eth_rx_descriptor_done(port_id, queue_id,
- FREQ_GEAR1_RX_PACKET_THRESHOLD) > 0))
+ else if (likely(rxq_count > FREQ_GEAR1_RX_PACKET_THRESHOLD))
stats[lcore_id].trend += FREQ_UP_TREND1_ACC;
if (likely(stats[lcore_id].trend > FREQ_UP_THRESHOLD)) {
--
2.7.4
^ permalink raw reply [flat|nested] 9+ messages in thread
* [dpdk-dev] [PATCH 4/4] examples/l3fwd-power: disable Lsc interrupts
2017-12-12 10:08 [dpdk-dev] [PATCH 1/4] examples/l3fwd-power: fix non Rx intr supported platform Nikhil Agarwal
2017-12-12 10:08 ` [dpdk-dev] [PATCH 2/4] examples/l3fwd-power: fix the timer for any platform freq Nikhil Agarwal
2017-12-12 10:08 ` [dpdk-dev] [PATCH 3/4] examples/l3fwd-power: replace desc done with Rx queue count Nikhil Agarwal
@ 2017-12-12 10:08 ` Nikhil Agarwal
2017-12-13 14:23 ` Hunt, David
2017-12-13 14:21 ` [dpdk-dev] [PATCH 1/4] examples/l3fwd-power: fix non Rx intr supported platform Hunt, David
3 siblings, 1 reply; 9+ messages in thread
From: Nikhil Agarwal @ 2017-12-12 10:08 UTC (permalink / raw)
To: dev; +Cc: david.hunt, nikhil.agarwal, hemant.agrawal
This application does not need Link Status Interrupt.
It will cause failure for the platforms not supporting LSC.
Signed-off-by: Nikhil Agarwal <nikhil.agarwal@linaro.org>
---
examples/l3fwd-power/main.c | 1 -
1 file changed, 1 deletion(-)
diff --git a/examples/l3fwd-power/main.c b/examples/l3fwd-power/main.c
index 4ddd04c..d80f663 100644
--- a/examples/l3fwd-power/main.c
+++ b/examples/l3fwd-power/main.c
@@ -229,7 +229,6 @@ static struct rte_eth_conf port_conf = {
.mq_mode = ETH_MQ_TX_NONE,
},
.intr_conf = {
- .lsc = 1,
.rxq = 1,
},
};
--
2.7.4
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [dpdk-dev] [PATCH 1/4] examples/l3fwd-power: fix non Rx intr supported platform
2017-12-12 10:08 [dpdk-dev] [PATCH 1/4] examples/l3fwd-power: fix non Rx intr supported platform Nikhil Agarwal
` (2 preceding siblings ...)
2017-12-12 10:08 ` [dpdk-dev] [PATCH 4/4] examples/l3fwd-power: disable Lsc interrupts Nikhil Agarwal
@ 2017-12-13 14:21 ` Hunt, David
2018-01-15 17:43 ` [dpdk-dev] [dpdk-stable] " Thomas Monjalon
3 siblings, 1 reply; 9+ messages in thread
From: Hunt, David @ 2017-12-13 14:21 UTC (permalink / raw)
To: Nikhil Agarwal, dev
Cc: nikhil.agarwal, hemant.agrawal, stable, Danny Zhou, Cunming Liang
On 12/12/2017 10:08 AM, Nikhil Agarwal wrote:
> This existing code cause the platform to start receiving packet
> immediately irrespective of interrupts available or not.
> If the platform does not support Rx interrupt, it shall not start
> receiving packets immediately. It shall let the timer management work.
>
> Fixes: aee3bc79cc34 ("examples/l3fwd-power: enable one-shot Rx interrupt and polling switch")
> Cc: stable@dpdk.org
> Cc: Danny Zhou <danny.zhou@intel.com>
> Cc: Cunming Liang <cunming.liang@intel.com>
>
> Signed-off-by: Nikhil Agarwal <nikhil.agarwal@linaro.org>
> ---
---snip---
Acked-by: David Hunt <david.hunt@intel.com>
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [dpdk-dev] [dpdk-stable] [PATCH 1/4] examples/l3fwd-power: fix non Rx intr supported platform
2017-12-13 14:21 ` [dpdk-dev] [PATCH 1/4] examples/l3fwd-power: fix non Rx intr supported platform Hunt, David
@ 2018-01-15 17:43 ` Thomas Monjalon
0 siblings, 0 replies; 9+ messages in thread
From: Thomas Monjalon @ 2018-01-15 17:43 UTC (permalink / raw)
To: Nikhil Agarwal
Cc: stable, Hunt, David, dev, nikhil.agarwal, hemant.agrawal,
Danny Zhou, Cunming Liang
13/12/2017 15:21, Hunt, David:
> On 12/12/2017 10:08 AM, Nikhil Agarwal wrote:
> > This existing code cause the platform to start receiving packet
> > immediately irrespective of interrupts available or not.
> > If the platform does not support Rx interrupt, it shall not start
> > receiving packets immediately. It shall let the timer management work.
> >
> > Fixes: aee3bc79cc34 ("examples/l3fwd-power: enable one-shot Rx interrupt and polling switch")
> > Cc: stable@dpdk.org
> > Cc: Danny Zhou <danny.zhou@intel.com>
> > Cc: Cunming Liang <cunming.liang@intel.com>
> >
> > Signed-off-by: Nikhil Agarwal <nikhil.agarwal@linaro.org>
> > ---
>
> ---snip---
>
> Acked-by: David Hunt <david.hunt@intel.com>
Series applied, thanks
^ permalink raw reply [flat|nested] 9+ messages in thread