ipoib: Make ipoib_warn ratelimited
authorkernel@kyup.com <kernel@kyup.com>
Mon, 8 Aug 2016 14:14:22 +0000 (17:14 +0300)
committerDoug Ledford <dledford@redhat.com>
Fri, 7 Oct 2016 20:54:33 +0000 (16:54 -0400)
In certain cases it's possible to be flooded by warning messages. To
cope with such situations make the ipoib_warn macro be ratelimited.
To prevent accidental limiting of legitimate, bursty messages make
the limit fairly liberal by allowing up to 100 messages in 10 seconds.

Signed-off-by: Nikolay Borisov <kernel@kyup.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
drivers/infiniband/ulp/ipoib/ipoib.h

index 4f7d9b48df643c7ef5f69b80f870a0f15c6efe87..7899167536e381e93a9dc392fc8e50c91ecef5b3 100644 (file)
@@ -771,7 +771,13 @@ static inline void ipoib_unregister_debugfs(void) { }
 #define ipoib_printk(level, priv, format, arg...)      \
        printk(level "%s: " format, ((struct ipoib_dev_priv *) priv)->dev->name , ## arg)
 #define ipoib_warn(priv, format, arg...)               \
-       ipoib_printk(KERN_WARNING, priv, format , ## arg)
+do {                                                   \
+       static DEFINE_RATELIMIT_STATE(_rs,              \
+               10 * HZ /*10 seconds */,                \
+               100);           \
+       if (__ratelimit(&_rs))                          \
+               ipoib_printk(KERN_WARNING, priv, format , ## arg);\
+} while (0)
 
 extern int ipoib_sendq_size;
 extern int ipoib_recvq_size;