summaryrefslogtreecommitdiff
path: root/net/ethtool
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2023-01-23 16:57:39 +0300
committerDavid S. Miller <davem@davemloft.net>2023-01-23 16:57:39 +0300
commitdc0b98a1758f0d2296349ca23ac88804b922e88d (patch)
tree7b92877d3bf3176735247d8102330098a5f79e5d /net/ethtool
parent7a98143118799411cc09e3dfc0b2a6f12628f7db (diff)
downloadlinux-dc0b98a1758f0d2296349ca23ac88804b922e88d.tar.xz
ethtool: Add and use ethnl_update_bool.
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ethtool')
-rw-r--r--net/ethtool/mm.c2
-rw-r--r--net/ethtool/netlink.h26
2 files changed, 27 insertions, 1 deletions
diff --git a/net/ethtool/mm.c b/net/ethtool/mm.c
index 809d196665c6..3e8acdb806fd 100644
--- a/net/ethtool/mm.c
+++ b/net/ethtool/mm.c
@@ -225,7 +225,7 @@ int ethnl_set_mm(struct sk_buff *skb, struct genl_info *info)
ethnl_update_u32(&cfg.verify_time, tb[ETHTOOL_A_MM_VERIFY_TIME], &mod);
ethnl_update_bool(&cfg.tx_enabled, tb[ETHTOOL_A_MM_TX_ENABLED], &mod);
ethnl_update_bool(&cfg.pmac_enabled, tb[ETHTOOL_A_MM_PMAC_ENABLED],
- &mod);
+ &mod);
ethnl_update_u32(&cfg.tx_min_frag_size,
tb[ETHTOOL_A_MM_TX_MIN_FRAG_SIZE], &mod);
diff --git a/net/ethtool/netlink.h b/net/ethtool/netlink.h
index deb057c4ea62..b01f7cd542c4 100644
--- a/net/ethtool/netlink.h
+++ b/net/ethtool/netlink.h
@@ -138,6 +138,32 @@ static inline void ethnl_update_bool32(u32 *dst, const struct nlattr *attr,
}
/**
+ * ethnl_update_bool() - updateb bool used as bool from NLA_U8 attribute
+ * @dst: value to update
+ * @attr: netlink attribute with new value or null
+ * @mod: pointer to bool for modification tracking
+ *
+ * Use the bool value from NLA_U8 netlink attribute @attr to set bool variable
+ * pointed to by @dst to 0 (if zero) or 1 (if not); do nothing if @attr is
+ * null. Bool pointed to by @mod is set to true if this function changed the
+ * logical value of *dst, otherwise it is left as is.
+ */
+static inline void ethnl_update_bool(bool *dst, const struct nlattr *attr,
+ bool *mod)
+{
+ u8 val;
+
+ if (!attr)
+ return;
+ val = !!nla_get_u8(attr);
+ if (!!*dst == val)
+ return;
+
+ *dst = val;
+ *mod = true;
+}
+
+/**
* ethnl_update_binary() - update binary data from NLA_BINARY attribute
* @dst: value to update
* @len: destination buffer length