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.
|
* file linux/can/netlink.h.
|
||||||
*/
|
*/
|
||||||
static int can_fixup_bittiming(const struct net_device *dev, struct can_bittiming *bt,
|
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);
|
const struct can_priv *priv = netdev_priv(dev);
|
||||||
unsigned int tseg1;
|
unsigned int tseg1;
|
||||||
|
@ -50,7 +51,8 @@ static int can_fixup_bittiming(const struct net_device *dev, struct can_bittimin
|
||||||
static int
|
static int
|
||||||
can_validate_bitrate(const struct net_device *dev, const struct can_bittiming *bt,
|
can_validate_bitrate(const struct net_device *dev, const struct can_bittiming *bt,
|
||||||
const u32 *bitrate_const,
|
const u32 *bitrate_const,
|
||||||
const unsigned int bitrate_const_cnt)
|
const unsigned int bitrate_const_cnt,
|
||||||
|
struct netlink_ext_ack *extack)
|
||||||
{
|
{
|
||||||
unsigned int i;
|
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,
|
int can_get_bittiming(const struct net_device *dev, struct can_bittiming *bt,
|
||||||
const struct can_bittiming_const *btc,
|
const struct can_bittiming_const *btc,
|
||||||
const u32 *bitrate_const,
|
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
|
/* Depending on the given can_bittiming parameter structure the CAN
|
||||||
* timing parameters are calculated based on the provided bitrate OR
|
* 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.
|
* provided directly which are then checked and fixed up.
|
||||||
*/
|
*/
|
||||||
if (!bt->tq && bt->bitrate && btc)
|
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)
|
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)
|
if (!bt->tq && bt->bitrate && bitrate_const)
|
||||||
return can_validate_bitrate(dev, bt, bitrate_const,
|
return can_validate_bitrate(dev, bt, bitrate_const,
|
||||||
bitrate_const_cnt);
|
bitrate_const_cnt, extack);
|
||||||
|
|
||||||
return -EINVAL;
|
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,
|
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);
|
struct can_priv *priv = netdev_priv(dev);
|
||||||
unsigned int bitrate; /* current bitrate */
|
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,
|
err = can_get_bittiming(dev, &bt,
|
||||||
priv->bittiming_const,
|
priv->bittiming_const,
|
||||||
priv->bitrate_const,
|
priv->bitrate_const,
|
||||||
priv->bitrate_const_cnt);
|
priv->bitrate_const_cnt,
|
||||||
|
extack);
|
||||||
if (err)
|
if (err)
|
||||||
return err;
|
return err;
|
||||||
|
|
||||||
|
@ -320,7 +321,8 @@ static int can_changelink(struct net_device *dev, struct nlattr *tb[],
|
||||||
err = can_get_bittiming(dev, &dbt,
|
err = can_get_bittiming(dev, &dbt,
|
||||||
priv->data_bittiming_const,
|
priv->data_bittiming_const,
|
||||||
priv->data_bitrate_const,
|
priv->data_bitrate_const,
|
||||||
priv->data_bitrate_const_cnt);
|
priv->data_bitrate_const_cnt,
|
||||||
|
extack);
|
||||||
if (err)
|
if (err)
|
||||||
return err;
|
return err;
|
||||||
|
|
||||||
|
|
|
@ -116,7 +116,7 @@ struct can_tdc_const {
|
||||||
|
|
||||||
#ifdef CONFIG_CAN_CALC_BITTIMING
|
#ifdef CONFIG_CAN_CALC_BITTIMING
|
||||||
int can_calc_bittiming(const struct net_device *dev, struct can_bittiming *bt,
|
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,
|
void can_calc_tdco(struct can_tdc *tdc, const struct can_tdc_const *tdc_const,
|
||||||
const struct can_bittiming *dbt,
|
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,
|
int can_get_bittiming(const struct net_device *dev, struct can_bittiming *bt,
|
||||||
const struct can_bittiming_const *btc,
|
const struct can_bittiming_const *btc,
|
||||||
const u32 *bitrate_const,
|
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
|
* can_bit_time() - Duration of one bit
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue