Commit c9e1d8ed authored by Vincent Mailhol's avatar Vincent Mailhol Committed by Marc Kleine-Budde

can: dev: replace can_priv::ctrlmode_static by can_get_static_ctrlmode()

The statically enabled features of a CAN controller can be retrieved
using below formula:

| u32 ctrlmode_static = priv->ctrlmode & ~priv->ctrlmode_supported;

As such, there is no need to store this information. This patch remove
the field ctrlmode_static of struct can_priv and provides, in
replacement, the inline function can_get_static_ctrlmode() which
returns the same value.

Link: https://lore.kernel.org/all/20211213160226.56219-2-mailhol.vincent@wanadoo.frSigned-off-by: default avatarVincent Mailhol <mailhol.vincent@wanadoo.fr>
Signed-off-by: default avatarMarc Kleine-Budde <mkl@pengutronix.de>
parent cc4b08c3
...@@ -296,6 +296,7 @@ EXPORT_SYMBOL_GPL(free_candev); ...@@ -296,6 +296,7 @@ EXPORT_SYMBOL_GPL(free_candev);
int can_change_mtu(struct net_device *dev, int new_mtu) int can_change_mtu(struct net_device *dev, int new_mtu)
{ {
struct can_priv *priv = netdev_priv(dev); struct can_priv *priv = netdev_priv(dev);
u32 ctrlmode_static = can_get_static_ctrlmode(priv);
/* Do not allow changing the MTU while running */ /* Do not allow changing the MTU while running */
if (dev->flags & IFF_UP) if (dev->flags & IFF_UP)
...@@ -305,7 +306,7 @@ int can_change_mtu(struct net_device *dev, int new_mtu) ...@@ -305,7 +306,7 @@ int can_change_mtu(struct net_device *dev, int new_mtu)
switch (new_mtu) { switch (new_mtu) {
case CAN_MTU: case CAN_MTU:
/* 'CANFD-only' controllers can not switch to CAN_MTU */ /* 'CANFD-only' controllers can not switch to CAN_MTU */
if (priv->ctrlmode_static & CAN_CTRLMODE_FD) if (ctrlmode_static & CAN_CTRLMODE_FD)
return -EINVAL; return -EINVAL;
priv->ctrlmode &= ~CAN_CTRLMODE_FD; priv->ctrlmode &= ~CAN_CTRLMODE_FD;
...@@ -314,7 +315,7 @@ int can_change_mtu(struct net_device *dev, int new_mtu) ...@@ -314,7 +315,7 @@ int can_change_mtu(struct net_device *dev, int new_mtu)
case CANFD_MTU: case CANFD_MTU:
/* check for potential CANFD ability */ /* check for potential CANFD ability */
if (!(priv->ctrlmode_supported & CAN_CTRLMODE_FD) && if (!(priv->ctrlmode_supported & CAN_CTRLMODE_FD) &&
!(priv->ctrlmode_static & CAN_CTRLMODE_FD)) !(ctrlmode_static & CAN_CTRLMODE_FD))
return -EINVAL; return -EINVAL;
priv->ctrlmode |= CAN_CTRLMODE_FD; priv->ctrlmode |= CAN_CTRLMODE_FD;
......
...@@ -211,7 +211,7 @@ static int can_changelink(struct net_device *dev, struct nlattr *tb[], ...@@ -211,7 +211,7 @@ static int can_changelink(struct net_device *dev, struct nlattr *tb[],
if (dev->flags & IFF_UP) if (dev->flags & IFF_UP)
return -EBUSY; return -EBUSY;
cm = nla_data(data[IFLA_CAN_CTRLMODE]); cm = nla_data(data[IFLA_CAN_CTRLMODE]);
ctrlstatic = priv->ctrlmode_static; ctrlstatic = can_get_static_ctrlmode(priv);
maskedflags = cm->flags & cm->mask; maskedflags = cm->flags & cm->mask;
/* check whether provided bits are allowed to be passed */ /* check whether provided bits are allowed to be passed */
......
...@@ -69,7 +69,6 @@ struct can_priv { ...@@ -69,7 +69,6 @@ struct can_priv {
/* CAN controller features - see include/uapi/linux/can/netlink.h */ /* CAN controller features - see include/uapi/linux/can/netlink.h */
u32 ctrlmode; /* current options setting */ u32 ctrlmode; /* current options setting */
u32 ctrlmode_supported; /* options that can be modified by netlink */ u32 ctrlmode_supported; /* options that can be modified by netlink */
u32 ctrlmode_static; /* static enabled options for driver/hardware */
int restart_ms; int restart_ms;
struct delayed_work restart_work; struct delayed_work restart_work;
...@@ -139,13 +138,17 @@ static inline void can_set_static_ctrlmode(struct net_device *dev, ...@@ -139,13 +138,17 @@ static inline void can_set_static_ctrlmode(struct net_device *dev,
/* alloc_candev() succeeded => netdev_priv() is valid at this point */ /* alloc_candev() succeeded => netdev_priv() is valid at this point */
priv->ctrlmode = static_mode; priv->ctrlmode = static_mode;
priv->ctrlmode_static = static_mode;
/* override MTU which was set by default in can_setup()? */ /* override MTU which was set by default in can_setup()? */
if (static_mode & CAN_CTRLMODE_FD) if (static_mode & CAN_CTRLMODE_FD)
dev->mtu = CANFD_MTU; dev->mtu = CANFD_MTU;
} }
static inline u32 can_get_static_ctrlmode(struct can_priv *priv)
{
return priv->ctrlmode & ~priv->ctrlmode_supported;
}
void can_setup(struct net_device *dev); void can_setup(struct net_device *dev);
struct net_device *alloc_candev_mqs(int sizeof_priv, unsigned int echo_skb_max, struct net_device *alloc_candev_mqs(int sizeof_priv, unsigned int echo_skb_max,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment