net/sfc: do not panic if alarms are not supported
authorAndrew Rybchenko <arybchenko@solarflare.com>
Thu, 19 Jan 2017 11:12:20 +0000 (11:12 +0000)
committerFerruh Yigit <ferruh.yigit@intel.com>
Mon, 30 Jan 2017 21:18:26 +0000 (22:18 +0100)
Alarms are not supported on the FreeBSD.
Application must poll link status periodically itself using
rte_eth_link_get_nowait() to avoid management event queue overflow.

Fixes: 2de39f4e1310 ("net/sfc: periodic management EVQ polling using alarm")

Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
Reviewed-by: Andrew Lee <alee@solarflare.com>
Reviewed-by: Andy Moreton <amoreton@solarflare.com>
drivers/net/sfc/sfc_ev.c

index c788986..fe6de6f 100644 (file)
@@ -499,10 +499,14 @@ sfc_ev_mgmt_periodic_qpoll(void *arg)
 
        rc = rte_eal_alarm_set(SFC_MGMT_EV_QPOLL_PERIOD_US,
                               sfc_ev_mgmt_periodic_qpoll, sa);
-       if (rc != 0)
-               sfc_panic(sa,
-                         "cannot rearm management EVQ polling alarm (rc=%d)",
-                         rc);
+       if (rc == -ENOTSUP) {
+               sfc_warn(sa, "alarms are not supported");
+               sfc_warn(sa, "management EVQ must be polled indirectly using no-wait link status update");
+       } else if (rc != 0) {
+               sfc_err(sa,
+                       "cannot rearm management EVQ polling alarm (rc=%d)",
+                       rc);
+       }
 }
 
 static void