mirror of
https://gitee.com/bianbu-linux/linux-6.6
synced 2025-04-26 14:17:26 -04:00
can: bittiming: can_changelink() pass extack down callstack
This is a preparation patch. In order to pass warning/error messages during netlink calls back to user space, pass the extack struct down the callstack of can_changelink(), the actual error messages will be added in the following ptaches. Link: https://lore.kernel.org/all/20230202110854.2318594-10-mkl@pengutronix.de Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
This commit is contained in:
parent
1494d27f64
commit
286c0e09e8
4 changed files with 17 additions and 11 deletions
|
@ -12,7 +12,8 @@
|
|||
* file linux/can/netlink.h.
|
||||
*/
|
||||
static int can_fixup_bittiming(const struct net_device *dev, struct can_bittiming *bt,
|
||||
const struct can_bittiming_const *btc)
|
||||
const struct can_bittiming_const *btc,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
const struct can_priv *priv = netdev_priv(dev);
|
||||
unsigned int tseg1;
|
||||
|
@ -50,7 +51,8 @@ static int can_fixup_bittiming(const struct net_device *dev, struct can_bittimin
|
|||
static int
|
||||
can_validate_bitrate(const struct net_device *dev, const struct can_bittiming *bt,
|
||||
const u32 *bitrate_const,
|
||||
const unsigned int bitrate_const_cnt)
|
||||
const unsigned int bitrate_const_cnt,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
unsigned int i;
|
||||
|
||||
|
@ -65,7 +67,8 @@ can_validate_bitrate(const struct net_device *dev, const struct can_bittiming *b
|
|||
int can_get_bittiming(const struct net_device *dev, struct can_bittiming *bt,
|
||||
const struct can_bittiming_const *btc,
|
||||
const u32 *bitrate_const,
|
||||
const unsigned int bitrate_const_cnt)
|
||||
const unsigned int bitrate_const_cnt,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
/* Depending on the given can_bittiming parameter structure the CAN
|
||||
* timing parameters are calculated based on the provided bitrate OR
|
||||
|
@ -73,12 +76,12 @@ int can_get_bittiming(const struct net_device *dev, struct can_bittiming *bt,
|
|||
* provided directly which are then checked and fixed up.
|
||||
*/
|
||||
if (!bt->tq && bt->bitrate && btc)
|
||||
return can_calc_bittiming(dev, bt, btc);
|
||||
return can_calc_bittiming(dev, bt, btc, extack);
|
||||
if (bt->tq && !bt->bitrate && btc)
|
||||
return can_fixup_bittiming(dev, bt, btc);
|
||||
return can_fixup_bittiming(dev, bt, btc, extack);
|
||||
if (!bt->tq && bt->bitrate && bitrate_const)
|
||||
return can_validate_bitrate(dev, bt, bitrate_const,
|
||||
bitrate_const_cnt);
|
||||
bitrate_const_cnt, extack);
|
||||
|
||||
return -EINVAL;
|
||||
}
|
||||
|
|
|
@ -63,7 +63,7 @@ can_update_sample_point(const struct can_bittiming_const *btc,
|
|||
}
|
||||
|
||||
int can_calc_bittiming(const struct net_device *dev, struct can_bittiming *bt,
|
||||
const struct can_bittiming_const *btc)
|
||||
const struct can_bittiming_const *btc, struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct can_priv *priv = netdev_priv(dev);
|
||||
unsigned int bitrate; /* current bitrate */
|
||||
|
|
|
@ -215,7 +215,8 @@ static int can_changelink(struct net_device *dev, struct nlattr *tb[],
|
|||
err = can_get_bittiming(dev, &bt,
|
||||
priv->bittiming_const,
|
||||
priv->bitrate_const,
|
||||
priv->bitrate_const_cnt);
|
||||
priv->bitrate_const_cnt,
|
||||
extack);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
|
@ -320,7 +321,8 @@ static int can_changelink(struct net_device *dev, struct nlattr *tb[],
|
|||
err = can_get_bittiming(dev, &dbt,
|
||||
priv->data_bittiming_const,
|
||||
priv->data_bitrate_const,
|
||||
priv->data_bitrate_const_cnt);
|
||||
priv->data_bitrate_const_cnt,
|
||||
extack);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
|
|
|
@ -116,7 +116,7 @@ struct can_tdc_const {
|
|||
|
||||
#ifdef CONFIG_CAN_CALC_BITTIMING
|
||||
int can_calc_bittiming(const struct net_device *dev, struct can_bittiming *bt,
|
||||
const struct can_bittiming_const *btc);
|
||||
const struct can_bittiming_const *btc, struct netlink_ext_ack *extack);
|
||||
|
||||
void can_calc_tdco(struct can_tdc *tdc, const struct can_tdc_const *tdc_const,
|
||||
const struct can_bittiming *dbt,
|
||||
|
@ -141,7 +141,8 @@ can_calc_tdco(struct can_tdc *tdc, const struct can_tdc_const *tdc_const,
|
|||
int can_get_bittiming(const struct net_device *dev, struct can_bittiming *bt,
|
||||
const struct can_bittiming_const *btc,
|
||||
const u32 *bitrate_const,
|
||||
const unsigned int bitrate_const_cnt);
|
||||
const unsigned int bitrate_const_cnt,
|
||||
struct netlink_ext_ack *extack);
|
||||
|
||||
/*
|
||||
* can_bit_time() - Duration of one bit
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue