Skip to content

Commit 375ef2b

Browse files
Gal PressmanSaeed Mahameed
authored andcommitted
net: Introduce netdev_*_once functions
Extend the net device error logging with netdev_*_once macros. netdev_*_once are the equivalents of the dev_*_once macros which are useful for messages that should only be logged once. Also add netdev_WARN_ONCE, which is the "once" extension for the already existing netdev_WARN macro. Signed-off-by: Gal Pressman <[email protected]> Signed-off-by: Saeed Mahameed <[email protected]>
1 parent 355368d commit 375ef2b

File tree

1 file changed

+29
-0
lines changed

1 file changed

+29
-0
lines changed

include/linux/netdevice.h

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4336,6 +4336,31 @@ void netdev_notice(const struct net_device *dev, const char *format, ...);
43364336
__printf(2, 3)
43374337
void netdev_info(const struct net_device *dev, const char *format, ...);
43384338

4339+
#define netdev_level_once(level, dev, fmt, ...) \
4340+
do { \
4341+
static bool __print_once __read_mostly; \
4342+
\
4343+
if (!__print_once) { \
4344+
__print_once = true; \
4345+
netdev_printk(level, dev, fmt, ##__VA_ARGS__); \
4346+
} \
4347+
} while (0)
4348+
4349+
#define netdev_emerg_once(dev, fmt, ...) \
4350+
netdev_level_once(KERN_EMERG, dev, fmt, ##__VA_ARGS__)
4351+
#define netdev_alert_once(dev, fmt, ...) \
4352+
netdev_level_once(KERN_ALERT, dev, fmt, ##__VA_ARGS__)
4353+
#define netdev_crit_once(dev, fmt, ...) \
4354+
netdev_level_once(KERN_CRIT, dev, fmt, ##__VA_ARGS__)
4355+
#define netdev_err_once(dev, fmt, ...) \
4356+
netdev_level_once(KERN_ERR, dev, fmt, ##__VA_ARGS__)
4357+
#define netdev_warn_once(dev, fmt, ...) \
4358+
netdev_level_once(KERN_WARNING, dev, fmt, ##__VA_ARGS__)
4359+
#define netdev_notice_once(dev, fmt, ...) \
4360+
netdev_level_once(KERN_NOTICE, dev, fmt, ##__VA_ARGS__)
4361+
#define netdev_info_once(dev, fmt, ...) \
4362+
netdev_level_once(KERN_INFO, dev, fmt, ##__VA_ARGS__)
4363+
43394364
#define MODULE_ALIAS_NETDEV(device) \
43404365
MODULE_ALIAS("netdev-" device)
43414366

@@ -4376,6 +4401,10 @@ do { \
43764401
WARN(1, "netdevice: %s%s\n" format, netdev_name(dev), \
43774402
netdev_reg_state(dev), ##args)
43784403

4404+
#define netdev_WARN_ONCE(dev, condition, format, arg...) \
4405+
WARN_ONCE(1, "netdevice: %s%s\n" format, netdev_name(dev) \
4406+
netdev_reg_state(dev), ##args)
4407+
43794408
/* netif printk helpers, similar to netdev_printk */
43804409

43814410
#define netif_printk(priv, type, level, dev, fmt, args...) \

0 commit comments

Comments
 (0)