aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/can/dev.c
diff options
context:
space:
mode:
authorOliver Hartkopp <socketcan@hartkopp.net>2014-02-28 10:36:20 -0500
committerMarc Kleine-Budde <mkl@pengutronix.de>2014-03-07 03:18:21 -0500
commitb30749fdfb9b72f4b1f03673cb5e45b8d4331188 (patch)
treebe63b059e8044248ae877243c3b8a2faf02d250a /drivers/net/can/dev.c
parenta94bc9c46e8e3e1bb5f707e81fd8c60fd93266e6 (diff)
can: only send bitrate data via netlink when available
When setting the bitrate both can_calc_bittiming() and can_fixup_bittiming() lead to the bitrate variable to be set, when a proper bit timing is available. Only then the bitrate configuration is stored for the device, so checking for priv->bittiming.bitrate is always sufficient. Signed-off-by: Oliver Hartkopp <socketcan@hartkopp.net> Acked-by: Stephane Grosjean <s.grosjean@peak-system.com> Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
Diffstat (limited to 'drivers/net/can/dev.c')
-rw-r--r--drivers/net/can/dev.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/drivers/net/can/dev.c b/drivers/net/can/dev.c
index e1a37413d53e..de04eac7c5f3 100644
--- a/drivers/net/can/dev.c
+++ b/drivers/net/can/dev.c
@@ -606,7 +606,7 @@ int open_candev(struct net_device *dev)
606{ 606{
607 struct can_priv *priv = netdev_priv(dev); 607 struct can_priv *priv = netdev_priv(dev);
608 608
609 if (!priv->bittiming.tq && !priv->bittiming.bitrate) { 609 if (!priv->bittiming.bitrate) {
610 netdev_err(dev, "bit-timing not yet defined\n"); 610 netdev_err(dev, "bit-timing not yet defined\n");
611 return -EINVAL; 611 return -EINVAL;
612 } 612 }
@@ -719,7 +719,8 @@ static size_t can_get_size(const struct net_device *dev)
719 struct can_priv *priv = netdev_priv(dev); 719 struct can_priv *priv = netdev_priv(dev);
720 size_t size = 0; 720 size_t size = 0;
721 721
722 size += nla_total_size(sizeof(struct can_bittiming)); /* IFLA_CAN_BITTIMING */ 722 if (priv->bittiming.bitrate) /* IFLA_CAN_BITTIMING */
723 size += nla_total_size(sizeof(struct can_bittiming));
723 if (priv->bittiming_const) /* IFLA_CAN_BITTIMING_CONST */ 724 if (priv->bittiming_const) /* IFLA_CAN_BITTIMING_CONST */
724 size += nla_total_size(sizeof(struct can_bittiming_const)); 725 size += nla_total_size(sizeof(struct can_bittiming_const));
725 size += nla_total_size(sizeof(struct can_clock)); /* IFLA_CAN_CLOCK */ 726 size += nla_total_size(sizeof(struct can_clock)); /* IFLA_CAN_CLOCK */
@@ -741,8 +742,9 @@ static int can_fill_info(struct sk_buff *skb, const struct net_device *dev)
741 742
742 if (priv->do_get_state) 743 if (priv->do_get_state)
743 priv->do_get_state(dev, &state); 744 priv->do_get_state(dev, &state);
744 if (nla_put(skb, IFLA_CAN_BITTIMING, 745 if ((priv->bittiming.bitrate &&
745 sizeof(priv->bittiming), &priv->bittiming) || 746 nla_put(skb, IFLA_CAN_BITTIMING,
747 sizeof(priv->bittiming), &priv->bittiming)) ||
746 (priv->bittiming_const && 748 (priv->bittiming_const &&
747 nla_put(skb, IFLA_CAN_BITTIMING_CONST, 749 nla_put(skb, IFLA_CAN_BITTIMING_CONST,
748 sizeof(*priv->bittiming_const), priv->bittiming_const)) || 750 sizeof(*priv->bittiming_const), priv->bittiming_const)) ||