Skip to content

Commit 286c0e0

Browse files
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/[email protected] Signed-off-by: Marc Kleine-Budde <[email protected]>
1 parent 1494d27 commit 286c0e0

File tree

4 files changed

+17
-11
lines changed

4 files changed

+17
-11
lines changed

drivers/net/can/dev/bittiming.c

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@
1212
* file linux/can/netlink.h.
1313
*/
1414
static int can_fixup_bittiming(const struct net_device *dev, struct can_bittiming *bt,
15-
const struct can_bittiming_const *btc)
15+
const struct can_bittiming_const *btc,
16+
struct netlink_ext_ack *extack)
1617
{
1718
const struct can_priv *priv = netdev_priv(dev);
1819
unsigned int tseg1;
@@ -50,7 +51,8 @@ static int can_fixup_bittiming(const struct net_device *dev, struct can_bittimin
5051
static int
5152
can_validate_bitrate(const struct net_device *dev, const struct can_bittiming *bt,
5253
const u32 *bitrate_const,
53-
const unsigned int bitrate_const_cnt)
54+
const unsigned int bitrate_const_cnt,
55+
struct netlink_ext_ack *extack)
5456
{
5557
unsigned int i;
5658

@@ -65,20 +67,21 @@ can_validate_bitrate(const struct net_device *dev, const struct can_bittiming *b
6567
int can_get_bittiming(const struct net_device *dev, struct can_bittiming *bt,
6668
const struct can_bittiming_const *btc,
6769
const u32 *bitrate_const,
68-
const unsigned int bitrate_const_cnt)
70+
const unsigned int bitrate_const_cnt,
71+
struct netlink_ext_ack *extack)
6972
{
7073
/* Depending on the given can_bittiming parameter structure the CAN
7174
* timing parameters are calculated based on the provided bitrate OR
7275
* alternatively the CAN timing parameters (tq, prop_seg, etc.) are
7376
* provided directly which are then checked and fixed up.
7477
*/
7578
if (!bt->tq && bt->bitrate && btc)
76-
return can_calc_bittiming(dev, bt, btc);
79+
return can_calc_bittiming(dev, bt, btc, extack);
7780
if (bt->tq && !bt->bitrate && btc)
78-
return can_fixup_bittiming(dev, bt, btc);
81+
return can_fixup_bittiming(dev, bt, btc, extack);
7982
if (!bt->tq && bt->bitrate && bitrate_const)
8083
return can_validate_bitrate(dev, bt, bitrate_const,
81-
bitrate_const_cnt);
84+
bitrate_const_cnt, extack);
8285

8386
return -EINVAL;
8487
}

drivers/net/can/dev/calc_bittiming.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ can_update_sample_point(const struct can_bittiming_const *btc,
6363
}
6464

6565
int can_calc_bittiming(const struct net_device *dev, struct can_bittiming *bt,
66-
const struct can_bittiming_const *btc)
66+
const struct can_bittiming_const *btc, struct netlink_ext_ack *extack)
6767
{
6868
struct can_priv *priv = netdev_priv(dev);
6969
unsigned int bitrate; /* current bitrate */

drivers/net/can/dev/netlink.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -215,7 +215,8 @@ static int can_changelink(struct net_device *dev, struct nlattr *tb[],
215215
err = can_get_bittiming(dev, &bt,
216216
priv->bittiming_const,
217217
priv->bitrate_const,
218-
priv->bitrate_const_cnt);
218+
priv->bitrate_const_cnt,
219+
extack);
219220
if (err)
220221
return err;
221222

@@ -320,7 +321,8 @@ static int can_changelink(struct net_device *dev, struct nlattr *tb[],
320321
err = can_get_bittiming(dev, &dbt,
321322
priv->data_bittiming_const,
322323
priv->data_bitrate_const,
323-
priv->data_bitrate_const_cnt);
324+
priv->data_bitrate_const_cnt,
325+
extack);
324326
if (err)
325327
return err;
326328

include/linux/can/bittiming.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ struct can_tdc_const {
116116

117117
#ifdef CONFIG_CAN_CALC_BITTIMING
118118
int can_calc_bittiming(const struct net_device *dev, struct can_bittiming *bt,
119-
const struct can_bittiming_const *btc);
119+
const struct can_bittiming_const *btc, struct netlink_ext_ack *extack);
120120

121121
void can_calc_tdco(struct can_tdc *tdc, const struct can_tdc_const *tdc_const,
122122
const struct can_bittiming *dbt,
@@ -141,7 +141,8 @@ can_calc_tdco(struct can_tdc *tdc, const struct can_tdc_const *tdc_const,
141141
int can_get_bittiming(const struct net_device *dev, struct can_bittiming *bt,
142142
const struct can_bittiming_const *btc,
143143
const u32 *bitrate_const,
144-
const unsigned int bitrate_const_cnt);
144+
const unsigned int bitrate_const_cnt,
145+
struct netlink_ext_ack *extack);
145146

146147
/*
147148
* can_bit_time() - Duration of one bit

0 commit comments

Comments
 (0)