From dc0b98a1758f0d2296349ca23ac88804b922e88d Mon Sep 17 00:00:00 2001 From: "David S. Miller" Date: Mon, 23 Jan 2023 13:57:39 +0000 Subject: [PATCH] ethtool: Add and use ethnl_update_bool. Signed-off-by: David S. Miller --- net/ethtool/mm.c | 2 +- net/ethtool/netlink.h | 26 ++++++++++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/net/ethtool/mm.c b/net/ethtool/mm.c index 809d196665c6b..3e8acdb806fda 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 deb057c4ea628..b01f7cd542c49 100644 --- a/net/ethtool/netlink.h +++ b/net/ethtool/netlink.h @@ -137,6 +137,32 @@ static inline void ethnl_update_bool32(u32 *dst, const struct nlattr *attr, *mod = true; } +/** + * 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 -- 2.30.2