]> rtime.felk.cvut.cz Git - socketcan-devel.git/commitdiff
Change can_set_bittiming() to allow
authorhartkopp <hartkopp@030b6a49-0b11-0410-94ab-b0dab22257f2>
Mon, 6 Oct 2008 13:59:11 +0000 (13:59 +0000)
committerhartkopp <hartkopp@030b6a49-0b11-0410-94ab-b0dab22257f2>
Mon, 6 Oct 2008 13:59:11 +0000 (13:59 +0000)
- pre-defined parameters
- non-available do_set_bittiming() functions

git-svn-id: svn://svn.berlios.de//socketcan/trunk@830 030b6a49-0b11-0410-94ab-b0dab22257f2

kernel/2.6/drivers/net/can/dev.c

index 1f90fc5fd2b5191e201e98a0a1bd6b8a07b7341e..98564df71e33a0c5e7a6961cbbf48f0993185784 100644 (file)
@@ -190,17 +190,17 @@ int can_set_bittiming(struct net_device *dev)
        struct can_priv *priv = netdev_priv(dev);
        int err;
 
-       /* Check if the CAN device needs bit-timing parameters */
-       if (priv->do_set_bittiming) {
+       /* Check if bit-timing parameters have been pre-defined */
+       if (!priv->bittiming.tq && !priv->bittiming.bitrate)
+               return -EINVAL;
+
+       /* Check if the CAN device has bit-timing parameters */
+       if (priv->bittiming_const) {
 
                /* Check if bit-timing parameters have already been set */
                if (priv->bittiming.tq && priv->bittiming.bitrate)
                        return 0;
 
-               /* Check if bit-timing parameters have been pre-defined */
-               if (!priv->bittiming.tq && !priv->bittiming.bitrate)
-                       return -EINVAL;
-
                /* Non-expert mode? Check if the bitrate has been pre-defined */
                if (!priv->bittiming.tq)
                        /* Determine bit-timing parameters */
@@ -210,12 +210,15 @@ int can_set_bittiming(struct net_device *dev)
                        err = can_fixup_bittiming(dev);
                if (err)
                        return err;
+       }
 
+       if (priv->do_set_bittiming) {
                /* Finally, set the bit-timing registers */
                err = priv->do_set_bittiming(dev);
                if (err)
                        return err;
        }
+
        return 0;
 }
 EXPORT_SYMBOL(can_set_bittiming);