2 * Copyright (C) 2005 Marc Kleine-Budde, Pengutronix
3 * Copyright (C) 2006 Andrey Volkov, Varma Electronics
4 * Copyright (C) 2008-2009 Wolfgang Grandegger <wg@grandegger.com>
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the version 2 of the GNU General Public License
8 * as published by the Free Software Foundation
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20 #include <linux/module.h>
21 #include <linux/kernel.h>
22 #include <linux/slab.h>
23 #include <linux/netdevice.h>
24 #include <linux/if_arp.h>
25 #include <linux/workqueue.h>
26 #include <linux/can.h>
27 #include <linux/can/dev.h>
28 #include <linux/can/netlink.h>
29 #include <net/rtnetlink.h>
31 #define MOD_DESC "CAN device driver interface"
33 MODULE_DESCRIPTION(MOD_DESC);
34 MODULE_LICENSE("GPL v2");
35 MODULE_AUTHOR("Wolfgang Grandegger <wg@grandegger.com>");
37 #ifdef CONFIG_CAN_CALC_BITTIMING
38 #define CAN_CALC_MAX_ERROR 50 /* in one-tenth of a percent */
41 * Bit-timing calculation derived from:
43 * Code based on LinCAN sources and H8S2638 project
44 * Copyright 2004-2006 Pavel Pisa - DCE FELK CVUT cz
45 * Copyright 2005 Stanislav Marek
46 * email: pisa@cmp.felk.cvut.cz
48 * Calculates proper bit-timing parameters for a specified bit-rate
49 * and sample-point, which can then be used to set the bit-timing
50 * registers of the CAN controller. You can find more information
51 * in the header file linux/can/netlink.h.
53 static int can_update_spt(const struct can_bittiming_const *btc,
54 int sampl_pt, int tseg, int *tseg1, int *tseg2)
56 *tseg2 = tseg + 1 - (sampl_pt * (tseg + 1)) / 1000;
57 if (*tseg2 < btc->tseg2_min)
58 *tseg2 = btc->tseg2_min;
59 if (*tseg2 > btc->tseg2_max)
60 *tseg2 = btc->tseg2_max;
61 *tseg1 = tseg - *tseg2;
62 if (*tseg1 > btc->tseg1_max) {
63 *tseg1 = btc->tseg1_max;
64 *tseg2 = tseg - *tseg1;
66 return 1000 * (tseg + 1 - *tseg2) / (tseg + 1);
69 static int can_calc_bittiming(struct net_device *dev, struct can_bittiming *bt)
71 struct can_priv *priv = netdev_priv(dev);
72 const struct can_bittiming_const *btc = priv->bittiming_const;
73 long rate, best_rate = 0;
74 long best_error = 1000000000, error = 0;
75 int best_tseg = 0, best_brp = 0, brp = 0;
76 int tsegall, tseg = 0, tseg1 = 0, tseg2 = 0;
77 int spt_error = 1000, spt = 0, sampl_pt;
80 if (!priv->bittiming_const)
83 /* Use CIA recommended sample points */
84 if (bt->sample_point) {
85 sampl_pt = bt->sample_point;
87 if (bt->bitrate > 800000)
89 else if (bt->bitrate > 500000)
95 /* tseg even = round down, odd = round up */
96 for (tseg = (btc->tseg1_max + btc->tseg2_max) * 2 + 1;
97 tseg >= (btc->tseg1_min + btc->tseg2_min) * 2; tseg--) {
98 tsegall = 1 + tseg / 2;
99 /* Compute all possible tseg choices (tseg=tseg1+tseg2) */
100 brp = priv->clock.freq / (tsegall * bt->bitrate) + tseg % 2;
101 /* chose brp step which is possible in system */
102 brp = (brp / btc->brp_inc) * btc->brp_inc;
103 if ((brp < btc->brp_min) || (brp > btc->brp_max))
105 rate = priv->clock.freq / (brp * tsegall);
106 error = bt->bitrate - rate;
107 /* tseg brp biterror */
110 if (error > best_error)
114 spt = can_update_spt(btc, sampl_pt, tseg / 2,
116 error = sampl_pt - spt;
119 if (error > spt_error)
123 best_tseg = tseg / 2;
131 /* Error in one-tenth of a percent */
132 error = (best_error * 1000) / bt->bitrate;
133 if (error > CAN_CALC_MAX_ERROR) {
134 dev_err(dev->dev.parent,
135 "bitrate error %ld.%ld%% too high\n",
136 error / 10, error % 10);
139 dev_warn(dev->dev.parent, "bitrate error %ld.%ld%%\n",
140 error / 10, error % 10);
144 /* real sample point */
145 bt->sample_point = can_update_spt(btc, sampl_pt, best_tseg,
148 v64 = (u64)best_brp * 1000000000UL;
149 do_div(v64, priv->clock.freq);
151 bt->prop_seg = tseg1 / 2;
152 bt->phase_seg1 = tseg1 - bt->prop_seg;
153 bt->phase_seg2 = tseg2;
155 /* check for sjw user settings */
156 if (!bt->sjw || !btc->sjw_max)
159 /* bt->sjw is at least 1 -> sanitize upper bound to sjw_max */
160 if (bt->sjw > btc->sjw_max)
161 bt->sjw = btc->sjw_max;
162 /* bt->sjw must not be higher than tseg2 */
169 bt->bitrate = priv->clock.freq / (bt->brp * (tseg1 + tseg2 + 1));
173 #else /* !CONFIG_CAN_CALC_BITTIMING */
174 static int can_calc_bittiming(struct net_device *dev, struct can_bittiming *bt)
176 dev_err(dev->dev.parent, "bit-timing calculation not available\n");
179 #endif /* CONFIG_CAN_CALC_BITTIMING */
182 * Checks the validity of the specified bit-timing parameters prop_seg,
183 * phase_seg1, phase_seg2 and sjw and tries to determine the bitrate
184 * prescaler value brp. You can find more information in the header
185 * file linux/can/netlink.h.
187 static int can_fixup_bittiming(struct net_device *dev, struct can_bittiming *bt)
189 struct can_priv *priv = netdev_priv(dev);
190 const struct can_bittiming_const *btc = priv->bittiming_const;
194 if (!priv->bittiming_const)
197 tseg1 = bt->prop_seg + bt->phase_seg1;
200 if (bt->sjw > btc->sjw_max ||
201 tseg1 < btc->tseg1_min || tseg1 > btc->tseg1_max ||
202 bt->phase_seg2 < btc->tseg2_min || bt->phase_seg2 > btc->tseg2_max)
205 brp64 = (u64)priv->clock.freq * (u64)bt->tq;
206 if (btc->brp_inc > 1)
207 do_div(brp64, btc->brp_inc);
208 brp64 += 500000000UL - 1;
209 do_div(brp64, 1000000000UL); /* the practicable BRP */
210 if (btc->brp_inc > 1)
211 brp64 *= btc->brp_inc;
212 bt->brp = (u32)brp64;
214 if (bt->brp < btc->brp_min || bt->brp > btc->brp_max)
217 alltseg = bt->prop_seg + bt->phase_seg1 + bt->phase_seg2 + 1;
218 bt->bitrate = priv->clock.freq / (bt->brp * alltseg);
219 bt->sample_point = ((tseg1 + 1) * 1000) / alltseg;
224 static int can_get_bittiming(struct net_device *dev, struct can_bittiming *bt)
226 struct can_priv *priv = netdev_priv(dev);
229 /* Check if the CAN device has bit-timing parameters */
230 if (priv->bittiming_const) {
232 /* Non-expert mode? Check if the bitrate has been pre-defined */
234 /* Determine bit-timing parameters */
235 err = can_calc_bittiming(dev, bt);
237 /* Check bit-timing params and calculate proper brp */
238 err = can_fixup_bittiming(dev, bt);
247 * Local echo of CAN messages
249 * CAN network devices *should* support a local echo functionality
250 * (see Documentation/networking/can.txt). To test the handling of CAN
251 * interfaces that do not support the local echo both driver types are
252 * implemented. In the case that the driver does not support the echo
253 * the IFF_ECHO remains clear in dev->flags. This causes the PF_CAN core
254 * to perform the echo as a fallback solution.
256 static void can_flush_echo_skb(struct net_device *dev)
258 struct can_priv *priv = netdev_priv(dev);
259 struct net_device_stats *stats = &dev->stats;
262 for (i = 0; i < priv->echo_skb_max; i++) {
263 if (priv->echo_skb[i]) {
264 kfree_skb(priv->echo_skb[i]);
265 priv->echo_skb[i] = NULL;
267 stats->tx_aborted_errors++;
273 * Put the skb on the stack to be looped backed locally lateron
275 * The function is typically called in the start_xmit function
276 * of the device driver. The driver must protect access to
277 * priv->echo_skb, if necessary.
279 void can_put_echo_skb(struct sk_buff *skb, struct net_device *dev,
282 struct can_priv *priv = netdev_priv(dev);
284 BUG_ON(idx >= priv->echo_skb_max);
286 /* check flag whether this packet has to be looped back */
287 if (!(dev->flags & IFF_ECHO) || skb->pkt_type != PACKET_LOOPBACK) {
292 if (!priv->echo_skb[idx]) {
293 struct sock *srcsk = skb->sk;
295 if (atomic_read(&skb->users) != 1) {
296 struct sk_buff *old_skb = skb;
298 skb = skb_clone(old_skb, GFP_ATOMIC);
307 /* make settings for echo to reduce code in irq context */
308 skb->protocol = htons(ETH_P_CAN);
309 skb->pkt_type = PACKET_BROADCAST;
310 skb->ip_summed = CHECKSUM_UNNECESSARY;
313 /* save this skb for tx interrupt echo handling */
314 priv->echo_skb[idx] = skb;
316 /* locking problem with netif_stop_queue() ?? */
317 dev_err(dev->dev.parent, "%s: BUG! echo_skb is occupied!\n",
322 EXPORT_SYMBOL_GPL(can_put_echo_skb);
325 * Get the skb from the stack and loop it back locally
327 * The function is typically called when the TX done interrupt
328 * is handled in the device driver. The driver must protect
329 * access to priv->echo_skb, if necessary.
331 void can_get_echo_skb(struct net_device *dev, unsigned int idx)
333 struct can_priv *priv = netdev_priv(dev);
335 BUG_ON(idx >= priv->echo_skb_max);
337 if (priv->echo_skb[idx]) {
338 netif_rx(priv->echo_skb[idx]);
339 priv->echo_skb[idx] = NULL;
342 EXPORT_SYMBOL_GPL(can_get_echo_skb);
345 * Remove the skb from the stack and free it.
347 * The function is typically called when TX failed.
349 void can_free_echo_skb(struct net_device *dev, unsigned int idx)
351 struct can_priv *priv = netdev_priv(dev);
353 BUG_ON(idx >= priv->echo_skb_max);
355 if (priv->echo_skb[idx]) {
356 dev_kfree_skb_any(priv->echo_skb[idx]);
357 priv->echo_skb[idx] = NULL;
360 EXPORT_SYMBOL_GPL(can_free_echo_skb);
363 * CAN device restart for bus-off recovery
365 void can_restart(struct net_device *dev)
367 struct can_priv *priv = netdev_priv(dev);
368 struct net_device_stats *stats = &dev->stats;
370 struct can_frame *cf;
373 BUG_ON(netif_carrier_ok(dev));
376 * No synchronization needed because the device is bus-off and
377 * no messages can come in or go out.
379 can_flush_echo_skb(dev);
381 /* send restart message upstream */
382 skb = alloc_can_err_skb(dev, &cf);
387 cf->can_id |= CAN_ERR_RESTARTED;
392 stats->rx_bytes += cf->can_dlc;
395 dev_dbg(dev->dev.parent, "restarted\n");
396 priv->can_stats.restarts++;
398 /* Now restart the device */
399 err = priv->do_set_mode(dev, CAN_MODE_START);
401 netif_carrier_on(dev);
403 dev_err(dev->dev.parent, "Error %d during restart", err);
406 static void can_restart_work(struct work_struct *work)
408 struct delayed_work *dwork = to_delayed_work(work);
409 struct can_priv *priv = container_of(dwork, struct can_priv, restart_work);
411 can_restart(priv->dev);
414 int can_restart_now(struct net_device *dev)
416 struct can_priv *priv = netdev_priv(dev);
419 * A manual restart is only permitted if automatic restart is
420 * disabled and the device is in the bus-off state
422 if (priv->restart_ms)
424 if (priv->state != CAN_STATE_BUS_OFF)
427 cancel_delayed_work_sync(&priv->restart_work);
436 * This functions should be called when the device goes bus-off to
437 * tell the netif layer that no more packets can be sent or received.
438 * If enabled, a timer is started to trigger bus-off recovery.
440 void can_bus_off(struct net_device *dev)
442 struct can_priv *priv = netdev_priv(dev);
444 dev_dbg(dev->dev.parent, "bus-off\n");
446 netif_carrier_off(dev);
447 priv->can_stats.bus_off++;
449 if (priv->restart_ms)
450 schedule_delayed_work(&priv->restart_work,
451 msecs_to_jiffies(priv->restart_ms));
453 EXPORT_SYMBOL_GPL(can_bus_off);
455 static void can_setup(struct net_device *dev)
457 dev->type = ARPHRD_CAN;
458 dev->mtu = sizeof(struct can_frame);
459 dev->hard_header_len = 0;
461 dev->tx_queue_len = 10;
463 /* New-style flags. */
464 dev->flags = IFF_NOARP;
465 dev->features = NETIF_F_NO_CSUM;
468 struct sk_buff *alloc_can_skb(struct net_device *dev, struct can_frame **cf)
472 skb = netdev_alloc_skb(dev, sizeof(struct can_frame));
476 skb->protocol = htons(ETH_P_CAN);
477 skb->pkt_type = PACKET_BROADCAST;
478 skb->ip_summed = CHECKSUM_UNNECESSARY;
480 skb_reset_mac_header(skb);
481 skb_reset_network_header(skb);
482 skb_reset_transport_header(skb);
484 *cf = (struct can_frame *)skb_put(skb, sizeof(struct can_frame));
485 memset(*cf, 0, sizeof(struct can_frame));
489 EXPORT_SYMBOL_GPL(alloc_can_skb);
491 struct sk_buff *alloc_can_err_skb(struct net_device *dev, struct can_frame **cf)
495 skb = alloc_can_skb(dev, cf);
499 (*cf)->can_id = CAN_ERR_FLAG;
500 (*cf)->can_dlc = CAN_ERR_DLC;
504 EXPORT_SYMBOL_GPL(alloc_can_err_skb);
507 * Allocate and setup space for the CAN network device
509 struct net_device *alloc_candev(int sizeof_priv, unsigned int echo_skb_max)
511 struct net_device *dev;
512 struct can_priv *priv;
516 size = ALIGN(sizeof_priv, sizeof(struct sk_buff *)) +
517 echo_skb_max * sizeof(struct sk_buff *);
521 dev = alloc_netdev(size, "can%d", can_setup);
525 priv = netdev_priv(dev);
529 priv->echo_skb_max = echo_skb_max;
530 priv->echo_skb = (void *)priv +
531 ALIGN(sizeof_priv, sizeof(struct sk_buff *));
534 priv->state = CAN_STATE_STOPPED;
536 INIT_DELAYED_WORK(&priv->restart_work, can_restart_work);
540 EXPORT_SYMBOL_GPL(alloc_candev);
543 * Free space of the CAN network device
545 void free_candev(struct net_device *dev)
549 EXPORT_SYMBOL_GPL(free_candev);
552 * Common open function when the device gets opened.
554 * This function should be called in the open function of the device
557 int open_candev(struct net_device *dev)
559 struct can_priv *priv = netdev_priv(dev);
561 if (!priv->bittiming.tq && !priv->bittiming.bitrate) {
562 dev_err(dev->dev.parent, "bit-timing not yet defined\n");
566 /* Switch carrier on if device was stopped while in bus-off state */
567 if (!netif_carrier_ok(dev))
568 netif_carrier_on(dev);
572 EXPORT_SYMBOL_GPL(open_candev);
575 * Common close function for cleanup before the device gets closed.
577 * This function should be called in the close function of the device
580 void close_candev(struct net_device *dev)
582 struct can_priv *priv = netdev_priv(dev);
584 cancel_delayed_work_sync(&priv->restart_work);
585 can_flush_echo_skb(dev);
587 EXPORT_SYMBOL_GPL(close_candev);
590 * CAN netlink interface
592 static const struct nla_policy can_policy[IFLA_CAN_MAX + 1] = {
593 [IFLA_CAN_STATE] = { .type = NLA_U32 },
594 [IFLA_CAN_CTRLMODE] = { .len = sizeof(struct can_ctrlmode) },
595 [IFLA_CAN_RESTART_MS] = { .type = NLA_U32 },
596 [IFLA_CAN_RESTART] = { .type = NLA_U32 },
597 [IFLA_CAN_BITTIMING] = { .len = sizeof(struct can_bittiming) },
598 [IFLA_CAN_BITTIMING_CONST]
599 = { .len = sizeof(struct can_bittiming_const) },
600 [IFLA_CAN_CLOCK] = { .len = sizeof(struct can_clock) },
601 [IFLA_CAN_BERR_COUNTER] = { .len = sizeof(struct can_berr_counter) },
604 static int can_changelink(struct net_device *dev,
605 struct nlattr *tb[], struct nlattr *data[])
607 struct can_priv *priv = netdev_priv(dev);
610 /* We need synchronization with dev->stop() */
613 if (data[IFLA_CAN_CTRLMODE]) {
614 struct can_ctrlmode *cm;
616 /* Do not allow changing controller mode while running */
617 if (dev->flags & IFF_UP)
619 cm = nla_data(data[IFLA_CAN_CTRLMODE]);
621 /* check whether changed bits are allowed to be modified */
622 if (cm->mask & ~priv->ctrlmode_supported)
625 /* clear bits to be modified and copy the flag values */
626 priv->ctrlmode &= ~cm->mask;
627 priv->ctrlmode |= (cm->flags & cm->mask);
630 if (data[IFLA_CAN_BITTIMING]) {
631 struct can_bittiming bt;
633 /* Do not allow changing bittiming while running */
634 if (dev->flags & IFF_UP)
636 memcpy(&bt, nla_data(data[IFLA_CAN_BITTIMING]), sizeof(bt));
637 if ((!bt.bitrate && !bt.tq) || (bt.bitrate && bt.tq))
639 err = can_get_bittiming(dev, &bt);
642 memcpy(&priv->bittiming, &bt, sizeof(bt));
644 if (priv->do_set_bittiming) {
645 /* Finally, set the bit-timing registers */
646 err = priv->do_set_bittiming(dev);
652 if (data[IFLA_CAN_RESTART_MS]) {
653 /* Do not allow changing restart delay while running */
654 if (dev->flags & IFF_UP)
656 priv->restart_ms = nla_get_u32(data[IFLA_CAN_RESTART_MS]);
659 if (data[IFLA_CAN_RESTART]) {
660 /* Do not allow a restart while not running */
661 if (!(dev->flags & IFF_UP))
663 err = can_restart_now(dev);
671 static size_t can_get_size(const struct net_device *dev)
673 struct can_priv *priv = netdev_priv(dev);
676 size = nla_total_size(sizeof(u32)); /* IFLA_CAN_STATE */
677 size += nla_total_size(sizeof(struct can_ctrlmode)); /* IFLA_CAN_CTRLMODE */
678 size += nla_total_size(sizeof(u32)); /* IFLA_CAN_RESTART_MS */
679 size += nla_total_size(sizeof(struct can_bittiming)); /* IFLA_CAN_BITTIMING */
680 size += nla_total_size(sizeof(struct can_clock)); /* IFLA_CAN_CLOCK */
681 if (priv->do_get_berr_counter) /* IFLA_CAN_BERR_COUNTER */
682 size += nla_total_size(sizeof(struct can_berr_counter));
683 if (priv->bittiming_const) /* IFLA_CAN_BITTIMING_CONST */
684 size += nla_total_size(sizeof(struct can_bittiming_const));
689 static int can_fill_info(struct sk_buff *skb, const struct net_device *dev)
691 struct can_priv *priv = netdev_priv(dev);
692 struct can_ctrlmode cm = {.flags = priv->ctrlmode};
693 struct can_berr_counter bec;
694 enum can_state state = priv->state;
696 if (priv->do_get_state)
697 priv->do_get_state(dev, &state);
698 NLA_PUT_U32(skb, IFLA_CAN_STATE, state);
699 NLA_PUT(skb, IFLA_CAN_CTRLMODE, sizeof(cm), &cm);
700 NLA_PUT_U32(skb, IFLA_CAN_RESTART_MS, priv->restart_ms);
701 NLA_PUT(skb, IFLA_CAN_BITTIMING,
702 sizeof(priv->bittiming), &priv->bittiming);
703 NLA_PUT(skb, IFLA_CAN_CLOCK, sizeof(priv->clock), &priv->clock);
704 if (priv->do_get_berr_counter && !priv->do_get_berr_counter(dev, &bec))
705 NLA_PUT(skb, IFLA_CAN_BERR_COUNTER, sizeof(bec), &bec);
706 if (priv->bittiming_const)
707 NLA_PUT(skb, IFLA_CAN_BITTIMING_CONST,
708 sizeof(*priv->bittiming_const), priv->bittiming_const);
716 static size_t can_get_xstats_size(const struct net_device *dev)
718 return sizeof(struct can_device_stats);
721 static int can_fill_xstats(struct sk_buff *skb, const struct net_device *dev)
723 struct can_priv *priv = netdev_priv(dev);
725 NLA_PUT(skb, IFLA_INFO_XSTATS,
726 sizeof(priv->can_stats), &priv->can_stats);
734 static int can_newlink(struct net *src_net, struct net_device *dev,
735 struct nlattr *tb[], struct nlattr *data[])
740 static void can_dellink(struct net_device *dev, struct list_head *head)
745 static struct rtnl_link_ops can_link_ops __read_mostly = {
747 .maxtype = IFLA_CAN_MAX,
748 .policy = can_policy,
750 .newlink = can_newlink,
751 .changelink = can_changelink,
752 .dellink = can_dellink,
753 .get_size = can_get_size,
754 .fill_info = can_fill_info,
755 .get_xstats_size = can_get_xstats_size,
756 .fill_xstats = can_fill_xstats,
760 * Register the CAN network device
762 int register_candev(struct net_device *dev)
764 dev->rtnl_link_ops = &can_link_ops;
765 return register_netdev(dev);
767 EXPORT_SYMBOL_GPL(register_candev);
770 * Unregister the CAN network device
772 void unregister_candev(struct net_device *dev)
774 unregister_netdev(dev);
776 EXPORT_SYMBOL_GPL(unregister_candev);
778 static __init int can_dev_init(void)
782 err = rtnl_link_register(&can_link_ops);
784 printk(KERN_INFO MOD_DESC "\n");
788 module_init(can_dev_init);
790 static __exit void can_dev_exit(void)
792 rtnl_link_unregister(&can_link_ops);
794 module_exit(can_dev_exit);
796 MODULE_ALIAS_RTNL_LINK("can");