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.fr Signed-off-by: Vincent Mailhol <mailhol.vincent@wanadoo.fr> Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
This commit is contained in:
parent
cc4b08c31b
commit
c9e1d8ed30
@ -296,6 +296,7 @@ EXPORT_SYMBOL_GPL(free_candev);
|
||||
int can_change_mtu(struct net_device *dev, int new_mtu)
|
||||
{
|
||||
struct can_priv *priv = netdev_priv(dev);
|
||||
u32 ctrlmode_static = can_get_static_ctrlmode(priv);
|
||||
|
||||
/* Do not allow changing the MTU while running */
|
||||
if (dev->flags & IFF_UP)
|
||||
@ -305,7 +306,7 @@ int can_change_mtu(struct net_device *dev, int new_mtu)
|
||||
switch (new_mtu) {
|
||||
case 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;
|
||||
|
||||
priv->ctrlmode &= ~CAN_CTRLMODE_FD;
|
||||
@ -314,7 +315,7 @@ int can_change_mtu(struct net_device *dev, int new_mtu)
|
||||
case CANFD_MTU:
|
||||
/* check for potential CANFD ability */
|
||||
if (!(priv->ctrlmode_supported & CAN_CTRLMODE_FD) &&
|
||||
!(priv->ctrlmode_static & CAN_CTRLMODE_FD))
|
||||
!(ctrlmode_static & CAN_CTRLMODE_FD))
|
||||
return -EINVAL;
|
||||
|
||||
priv->ctrlmode |= CAN_CTRLMODE_FD;
|
||||
|
@ -211,7 +211,7 @@ static int can_changelink(struct net_device *dev, struct nlattr *tb[],
|
||||
if (dev->flags & IFF_UP)
|
||||
return -EBUSY;
|
||||
cm = nla_data(data[IFLA_CAN_CTRLMODE]);
|
||||
ctrlstatic = priv->ctrlmode_static;
|
||||
ctrlstatic = can_get_static_ctrlmode(priv);
|
||||
maskedflags = cm->flags & cm->mask;
|
||||
|
||||
/* check whether provided bits are allowed to be passed */
|
||||
|
@ -69,7 +69,6 @@ struct can_priv {
|
||||
/* CAN controller features - see include/uapi/linux/can/netlink.h */
|
||||
u32 ctrlmode; /* current options setting */
|
||||
u32 ctrlmode_supported; /* options that can be modified by netlink */
|
||||
u32 ctrlmode_static; /* static enabled options for driver/hardware */
|
||||
|
||||
int restart_ms;
|
||||
struct delayed_work restart_work;
|
||||
@ -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 */
|
||||
priv->ctrlmode = static_mode;
|
||||
priv->ctrlmode_static = static_mode;
|
||||
|
||||
/* override MTU which was set by default in can_setup()? */
|
||||
if (static_mode & CAN_CTRLMODE_FD)
|
||||
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);
|
||||
|
||||
struct net_device *alloc_candev_mqs(int sizeof_priv, unsigned int echo_skb_max,
|
||||
|
Loading…
Reference in New Issue
Block a user