net/qede: fix slow path completion timeout
authorShahed Shaikh <shahed.shaikh@cavium.com>
Wed, 23 May 2018 18:48:53 +0000 (11:48 -0700)
committerFerruh Yigit <ferruh.yigit@intel.com>
Fri, 25 May 2018 15:07:40 +0000 (17:07 +0200)
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 <shahed.shaikh@cavium.com>
drivers/net/qede/qede_ethdev.c

index 63d082a..3206cc6 100644 (file)
@@ -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) {