Browse Source

net: thunderx: Set watchdog timeout value

If a txq (SQ) remains in stopped state after this timeout its
considered as stuck and interface is reinited.

Signed-off-by: Sunil Goutham <sgoutham@cavium.com>
Signed-off-by: Aleksey Makarov <aleksey.makarov@caviumnetworks.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Sunil Goutham 10 years ago
parent
commit
3d7a8aaad8

+ 9 - 0
drivers/net/ethernet/cavium/thunder/nic.h

@@ -125,6 +125,15 @@
  */
  */
 #define NICPF_CLK_PER_INT_TICK		2
 #define NICPF_CLK_PER_INT_TICK		2
 
 
+/* Time to wait before we decide that a SQ is stuck.
+ *
+ * Since both pkt rx and tx notifications are done with same CQ,
+ * when packets are being received at very high rate (eg: L2 forwarding)
+ * then freeing transmitted skbs will be delayed and watchdog
+ * will kick in, resetting interface. Hence keeping this value high.
+ */
+#define	NICVF_TX_TIMEOUT		(50 * HZ)
+
 struct nicvf_cq_poll {
 struct nicvf_cq_poll {
 	u8	cq_idx;		/* Completion queue index */
 	u8	cq_idx;		/* Completion queue index */
 	struct	napi_struct napi;
 	struct	napi_struct napi;

+ 1 - 0
drivers/net/ethernet/cavium/thunder/nicvf_main.c

@@ -1293,6 +1293,7 @@ static int nicvf_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
 	netdev->hw_features = netdev->features;
 	netdev->hw_features = netdev->features;
 
 
 	netdev->netdev_ops = &nicvf_netdev_ops;
 	netdev->netdev_ops = &nicvf_netdev_ops;
+	netdev->watchdog_timeo = NICVF_TX_TIMEOUT;
 
 
 	INIT_WORK(&nic->reset_task, nicvf_reset_task);
 	INIT_WORK(&nic->reset_task, nicvf_reset_task);