From: Shahed Shaikh Date: Wed, 23 May 2018 18:48:53 +0000 (-0700) Subject: net/qede: fix slow path completion timeout X-Git-Url: http://git.droids-corp.org/?a=commitdiff_plain;h=0833120f20f0aeae8496d39bddaad0c1a70b0bfc;p=dpdk.git net/qede: fix slow path completion timeout In 100G mode, we poll firmware slow path completion for every 1 second, which is not enough and may result in completion timeout if driver misses that window. Patch "eal: set affinity for control threads" exposed this issue since alarm callback runs in control thread context. Fix this issue by update polling period to 100ms. Fixes: d651ee4919cd ("eal: set affinity for control threads") Fixes: 2af14ca79c0a ("net/qede: support 100G") Cc: stable@dpdk.org Signed-off-by: Shahed Shaikh --- diff --git a/drivers/net/qede/qede_ethdev.c b/drivers/net/qede/qede_ethdev.c index 63d082af50..3206cc6c63 100644 --- a/drivers/net/qede/qede_ethdev.c +++ b/drivers/net/qede/qede_ethdev.c @@ -16,7 +16,7 @@ int qede_logtype_init; int qede_logtype_driver; static const struct qed_eth_ops *qed_ops; -static int64_t timer_period = 1; +#define QEDE_SP_TIMER_PERIOD 10000 /* 100ms */ /* VXLAN tunnel classification mapping */ const struct _qede_udp_tunn_types { @@ -1698,7 +1698,7 @@ static void qede_poll_sp_sb_cb(void *param) qede_interrupt_action(ECORE_LEADING_HWFN(edev)); qede_interrupt_action(&edev->hwfns[1]); - rc = rte_eal_alarm_set(timer_period * US_PER_S, + rc = rte_eal_alarm_set(QEDE_SP_TIMER_PERIOD, qede_poll_sp_sb_cb, (void *)eth_dev); if (rc != 0) { @@ -3093,7 +3093,7 @@ static int qede_common_dev_init(struct rte_eth_dev *eth_dev, bool is_vf) * interrupt vector but we need one for each engine. */ if (ECORE_IS_CMT(edev) && IS_PF(edev)) { - rc = rte_eal_alarm_set(timer_period * US_PER_S, + rc = rte_eal_alarm_set(QEDE_SP_TIMER_PERIOD, qede_poll_sp_sb_cb, (void *)eth_dev); if (rc != 0) {