]> git.proxmox.com Git - mirror_ubuntu-hirsute-kernel.git/commitdiff
ethtool: add DEBUG_NTF notification
authorMichal Kubecek <mkubecek@suse.cz>
Sun, 26 Jan 2020 22:11:10 +0000 (23:11 +0100)
committerDavid S. Miller <davem@davemloft.net>
Mon, 27 Jan 2020 10:31:36 +0000 (11:31 +0100)
Send ETHTOOL_MSG_DEBUG_NTF notification message whenever debugging message
mask for a device are modified using ETHTOOL_MSG_DEBUG_SET netlink message
or ETHTOOL_SMSGLVL ioctl request.

The notification message has the same format as reply to DEBUG_GET request.
As with other ethtool notifications, netlink requests only trigger the
notification if the mask is actually changed while ioctl request trigger it
whenever the request results in calling the ethtool_ops handler.

Signed-off-by: Michal Kubecek <mkubecek@suse.cz>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: David S. Miller <davem@davemloft.net>
Documentation/networking/ethtool-netlink.rst
include/uapi/linux/ethtool_netlink.h
net/ethtool/debug.c
net/ethtool/ioctl.c
net/ethtool/netlink.c

index 58473c05319fa547a7faf4fb2b084d3d8e25a20a..2263f885d18f7d37c601d65bf652ab52e3e8b897 100644 (file)
@@ -199,6 +199,7 @@ Kernel to userspace:
   ``ETHTOOL_MSG_LINKMODES_NTF``         link modes notification
   ``ETHTOOL_MSG_LINKSTATE_GET_REPLY``   link state info
   ``ETHTOOL_MSG_DEBUG_GET_REPLY``       debugging settings
+  ``ETHTOOL_MSG_DEBUG_NTF``             debugging settings notification
   ===================================== ================================
 
 ``GET`` requests are sent by userspace applications to retrieve device
index 8f0b6fd277d5e713f021cb4fcdcb2cc696a7c724..67a06b94bf28c19a53a5c190064df3e3a7f87a9c 100644 (file)
@@ -38,6 +38,7 @@ enum {
        ETHTOOL_MSG_LINKMODES_NTF,
        ETHTOOL_MSG_LINKSTATE_GET_REPLY,
        ETHTOOL_MSG_DEBUG_GET_REPLY,
+       ETHTOOL_MSG_DEBUG_NTF,
 
        /* add new constants above here */
        __ETHTOOL_MSG_KERNEL_CNT,
index 6fc3ef8113c09b861a7047498efa0f6395bd0f30..aaef4843e6baffb669267ef89c06a4850c87578d 100644 (file)
@@ -123,6 +123,7 @@ int ethnl_set_debug(struct sk_buff *skb, struct genl_info *info)
                goto out_ops;
 
        dev->ethtool_ops->set_msglevel(dev, msg_mask);
+       ethtool_notify(dev, ETHTOOL_MSG_DEBUG_NTF, NULL);
 
 out_ops:
        ethnl_ops_complete(dev);
index 182bffbffa7835dce6b93d165f98cd893fb3ef2b..46e0b31782fc811e284528a9f7fbfdb3a82318e5 100644 (file)
@@ -2545,6 +2545,8 @@ int dev_ethtool(struct net *net, struct ifreq *ifr)
        case ETHTOOL_SMSGLVL:
                rc = ethtool_set_value_void(dev, useraddr,
                                       dev->ethtool_ops->set_msglevel);
+               if (!rc)
+                       ethtool_notify(dev, ETHTOOL_MSG_DEBUG_NTF, NULL);
                break;
        case ETHTOOL_GEEE:
                rc = ethtool_get_eee(dev, useraddr);
index bcdc42e0bd146123e35b1e95067c1f26b2309f6b..9a0a6c2f8dbbad3d2da5830e8d2df402f072ef9b 100644 (file)
@@ -524,6 +524,7 @@ static const struct ethnl_request_ops *
 ethnl_default_notify_ops[ETHTOOL_MSG_KERNEL_MAX + 1] = {
        [ETHTOOL_MSG_LINKINFO_NTF]      = &ethnl_linkinfo_request_ops,
        [ETHTOOL_MSG_LINKMODES_NTF]     = &ethnl_linkmodes_request_ops,
+       [ETHTOOL_MSG_DEBUG_NTF]         = &ethnl_debug_request_ops,
 };
 
 /* default notification handler */
@@ -607,6 +608,7 @@ typedef void (*ethnl_notify_handler_t)(struct net_device *dev, unsigned int cmd,
 static const ethnl_notify_handler_t ethnl_notify_handlers[] = {
        [ETHTOOL_MSG_LINKINFO_NTF]      = ethnl_default_notify,
        [ETHTOOL_MSG_LINKMODES_NTF]     = ethnl_default_notify,
+       [ETHTOOL_MSG_DEBUG_NTF]         = ethnl_default_notify,
 };
 
 void ethtool_notify(struct net_device *dev, unsigned int cmd, const void *data)