• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
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>
5  *
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
9  *
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.
14  *
15  * You should have received a copy of the GNU General Public License
16  * along with this program; if not, see <http://www.gnu.org/licenses/>.
17  */
18 
19 #include <linux/module.h>
20 #include <linux/kernel.h>
21 #include <linux/slab.h>
22 #include <linux/netdevice.h>
23 #include <linux/if_arp.h>
24 #include <linux/workqueue.h>
25 #include <linux/can.h>
26 #include <linux/can/dev.h>
27 #include <linux/can/skb.h>
28 #include <linux/can/netlink.h>
29 #include <linux/can/led.h>
30 #include <net/rtnetlink.h>
31 
32 #define MOD_DESC "CAN device driver interface"
33 
34 MODULE_DESCRIPTION(MOD_DESC);
35 MODULE_LICENSE("GPL v2");
36 MODULE_AUTHOR("Wolfgang Grandegger <wg@grandegger.com>");
37 
38 /* CAN DLC to real data length conversion helpers */
39 
40 static const u8 dlc2len[] = {0, 1, 2, 3, 4, 5, 6, 7,
41 			     8, 12, 16, 20, 24, 32, 48, 64};
42 
43 /* get data length from can_dlc with sanitized can_dlc */
can_dlc2len(u8 can_dlc)44 u8 can_dlc2len(u8 can_dlc)
45 {
46 	return dlc2len[can_dlc & 0x0F];
47 }
48 EXPORT_SYMBOL_GPL(can_dlc2len);
49 
50 static const u8 len2dlc[] = {0, 1, 2, 3, 4, 5, 6, 7, 8,		/* 0 - 8 */
51 			     9, 9, 9, 9,			/* 9 - 12 */
52 			     10, 10, 10, 10,			/* 13 - 16 */
53 			     11, 11, 11, 11,			/* 17 - 20 */
54 			     12, 12, 12, 12,			/* 21 - 24 */
55 			     13, 13, 13, 13, 13, 13, 13, 13,	/* 25 - 32 */
56 			     14, 14, 14, 14, 14, 14, 14, 14,	/* 33 - 40 */
57 			     14, 14, 14, 14, 14, 14, 14, 14,	/* 41 - 48 */
58 			     15, 15, 15, 15, 15, 15, 15, 15,	/* 49 - 56 */
59 			     15, 15, 15, 15, 15, 15, 15, 15};	/* 57 - 64 */
60 
61 /* map the sanitized data length to an appropriate data length code */
can_len2dlc(u8 len)62 u8 can_len2dlc(u8 len)
63 {
64 	if (unlikely(len > 64))
65 		return 0xF;
66 
67 	return len2dlc[len];
68 }
69 EXPORT_SYMBOL_GPL(can_len2dlc);
70 
71 #ifdef CONFIG_CAN_CALC_BITTIMING
72 #define CAN_CALC_MAX_ERROR 50 /* in one-tenth of a percent */
73 #define CAN_CALC_SYNC_SEG 1
74 
75 /*
76  * Bit-timing calculation derived from:
77  *
78  * Code based on LinCAN sources and H8S2638 project
79  * Copyright 2004-2006 Pavel Pisa - DCE FELK CVUT cz
80  * Copyright 2005      Stanislav Marek
81  * email: pisa@cmp.felk.cvut.cz
82  *
83  * Calculates proper bit-timing parameters for a specified bit-rate
84  * and sample-point, which can then be used to set the bit-timing
85  * registers of the CAN controller. You can find more information
86  * in the header file linux/can/netlink.h.
87  */
can_update_sample_point(const struct can_bittiming_const * btc,unsigned int sample_point_nominal,unsigned int tseg,unsigned int * tseg1_ptr,unsigned int * tseg2_ptr,unsigned int * sample_point_error_ptr)88 static int can_update_sample_point(const struct can_bittiming_const *btc,
89 			  unsigned int sample_point_nominal, unsigned int tseg,
90 			  unsigned int *tseg1_ptr, unsigned int *tseg2_ptr,
91 			  unsigned int *sample_point_error_ptr)
92 {
93 	unsigned int sample_point_error, best_sample_point_error = UINT_MAX;
94 	unsigned int sample_point, best_sample_point = 0;
95 	unsigned int tseg1, tseg2;
96 	int i;
97 
98 	for (i = 0; i <= 1; i++) {
99 		tseg2 = tseg + CAN_CALC_SYNC_SEG - (sample_point_nominal * (tseg + CAN_CALC_SYNC_SEG)) / 1000 - i;
100 		tseg2 = clamp(tseg2, btc->tseg2_min, btc->tseg2_max);
101 		tseg1 = tseg - tseg2;
102 		if (tseg1 > btc->tseg1_max) {
103 			tseg1 = btc->tseg1_max;
104 			tseg2 = tseg - tseg1;
105 		}
106 
107 		sample_point = 1000 * (tseg + CAN_CALC_SYNC_SEG - tseg2) / (tseg + CAN_CALC_SYNC_SEG);
108 		sample_point_error = abs(sample_point_nominal - sample_point);
109 
110 		if ((sample_point <= sample_point_nominal) && (sample_point_error < best_sample_point_error)) {
111 			best_sample_point = sample_point;
112 			best_sample_point_error = sample_point_error;
113 			*tseg1_ptr = tseg1;
114 			*tseg2_ptr = tseg2;
115 		}
116 	}
117 
118 	if (sample_point_error_ptr)
119 		*sample_point_error_ptr = best_sample_point_error;
120 
121 	return best_sample_point;
122 }
123 
can_calc_bittiming(struct net_device * dev,struct can_bittiming * bt,const struct can_bittiming_const * btc)124 static int can_calc_bittiming(struct net_device *dev, struct can_bittiming *bt,
125 			      const struct can_bittiming_const *btc)
126 {
127 	struct can_priv *priv = netdev_priv(dev);
128 	unsigned int bitrate;			/* current bitrate */
129 	unsigned int bitrate_error;		/* difference between current and nominal value */
130 	unsigned int best_bitrate_error = UINT_MAX;
131 	unsigned int sample_point_error;	/* difference between current and nominal value */
132 	unsigned int best_sample_point_error = UINT_MAX;
133 	unsigned int sample_point_nominal;	/* nominal sample point */
134 	unsigned int best_tseg = 0;		/* current best value for tseg */
135 	unsigned int best_brp = 0;		/* current best value for brp */
136 	unsigned int brp, tsegall, tseg, tseg1 = 0, tseg2 = 0;
137 	u64 v64;
138 
139 	/* Use CiA recommended sample points */
140 	if (bt->sample_point) {
141 		sample_point_nominal = bt->sample_point;
142 	} else {
143 		if (bt->bitrate > 800000)
144 			sample_point_nominal = 750;
145 		else if (bt->bitrate > 500000)
146 			sample_point_nominal = 800;
147 		else
148 			sample_point_nominal = 875;
149 	}
150 
151 	/* tseg even = round down, odd = round up */
152 	for (tseg = (btc->tseg1_max + btc->tseg2_max) * 2 + 1;
153 	     tseg >= (btc->tseg1_min + btc->tseg2_min) * 2; tseg--) {
154 		tsegall = CAN_CALC_SYNC_SEG + tseg / 2;
155 
156 		/* Compute all possible tseg choices (tseg=tseg1+tseg2) */
157 		brp = priv->clock.freq / (tsegall * bt->bitrate) + tseg % 2;
158 
159 		/* choose brp step which is possible in system */
160 		brp = (brp / btc->brp_inc) * btc->brp_inc;
161 		if ((brp < btc->brp_min) || (brp > btc->brp_max))
162 			continue;
163 
164 		bitrate = priv->clock.freq / (brp * tsegall);
165 		bitrate_error = abs(bt->bitrate - bitrate);
166 
167 		/* tseg brp biterror */
168 		if (bitrate_error > best_bitrate_error)
169 			continue;
170 
171 		/* reset sample point error if we have a better bitrate */
172 		if (bitrate_error < best_bitrate_error)
173 			best_sample_point_error = UINT_MAX;
174 
175 		can_update_sample_point(btc, sample_point_nominal, tseg / 2, &tseg1, &tseg2, &sample_point_error);
176 		if (sample_point_error > best_sample_point_error)
177 			continue;
178 
179 		best_sample_point_error = sample_point_error;
180 		best_bitrate_error = bitrate_error;
181 		best_tseg = tseg / 2;
182 		best_brp = brp;
183 
184 		if (bitrate_error == 0 && sample_point_error == 0)
185 			break;
186 	}
187 
188 	if (best_bitrate_error) {
189 		/* Error in one-tenth of a percent */
190 		v64 = (u64)best_bitrate_error * 1000;
191 		do_div(v64, bt->bitrate);
192 		bitrate_error = (u32)v64;
193 		if (bitrate_error > CAN_CALC_MAX_ERROR) {
194 			netdev_err(dev,
195 				   "bitrate error %d.%d%% too high\n",
196 				   bitrate_error / 10, bitrate_error % 10);
197 			return -EDOM;
198 		}
199 		netdev_warn(dev, "bitrate error %d.%d%%\n",
200 			    bitrate_error / 10, bitrate_error % 10);
201 	}
202 
203 	/* real sample point */
204 	bt->sample_point = can_update_sample_point(btc, sample_point_nominal, best_tseg,
205 					  &tseg1, &tseg2, NULL);
206 
207 	v64 = (u64)best_brp * 1000 * 1000 * 1000;
208 	do_div(v64, priv->clock.freq);
209 	bt->tq = (u32)v64;
210 	bt->prop_seg = tseg1 / 2;
211 	bt->phase_seg1 = tseg1 - bt->prop_seg;
212 	bt->phase_seg2 = tseg2;
213 
214 	/* check for sjw user settings */
215 	if (!bt->sjw || !btc->sjw_max) {
216 		bt->sjw = 1;
217 	} else {
218 		/* bt->sjw is at least 1 -> sanitize upper bound to sjw_max */
219 		if (bt->sjw > btc->sjw_max)
220 			bt->sjw = btc->sjw_max;
221 		/* bt->sjw must not be higher than tseg2 */
222 		if (tseg2 < bt->sjw)
223 			bt->sjw = tseg2;
224 	}
225 
226 	bt->brp = best_brp;
227 
228 	/* real bitrate */
229 	bt->bitrate = priv->clock.freq / (bt->brp * (CAN_CALC_SYNC_SEG + tseg1 + tseg2));
230 
231 	return 0;
232 }
233 #else /* !CONFIG_CAN_CALC_BITTIMING */
can_calc_bittiming(struct net_device * dev,struct can_bittiming * bt,const struct can_bittiming_const * btc)234 static int can_calc_bittiming(struct net_device *dev, struct can_bittiming *bt,
235 			      const struct can_bittiming_const *btc)
236 {
237 	netdev_err(dev, "bit-timing calculation not available\n");
238 	return -EINVAL;
239 }
240 #endif /* CONFIG_CAN_CALC_BITTIMING */
241 
242 /*
243  * Checks the validity of the specified bit-timing parameters prop_seg,
244  * phase_seg1, phase_seg2 and sjw and tries to determine the bitrate
245  * prescaler value brp. You can find more information in the header
246  * file linux/can/netlink.h.
247  */
can_fixup_bittiming(struct net_device * dev,struct can_bittiming * bt,const struct can_bittiming_const * btc)248 static int can_fixup_bittiming(struct net_device *dev, struct can_bittiming *bt,
249 			       const struct can_bittiming_const *btc)
250 {
251 	struct can_priv *priv = netdev_priv(dev);
252 	int tseg1, alltseg;
253 	u64 brp64;
254 
255 	tseg1 = bt->prop_seg + bt->phase_seg1;
256 	if (!bt->sjw)
257 		bt->sjw = 1;
258 	if (bt->sjw > btc->sjw_max ||
259 	    tseg1 < btc->tseg1_min || tseg1 > btc->tseg1_max ||
260 	    bt->phase_seg2 < btc->tseg2_min || bt->phase_seg2 > btc->tseg2_max)
261 		return -ERANGE;
262 
263 	brp64 = (u64)priv->clock.freq * (u64)bt->tq;
264 	if (btc->brp_inc > 1)
265 		do_div(brp64, btc->brp_inc);
266 	brp64 += 500000000UL - 1;
267 	do_div(brp64, 1000000000UL); /* the practicable BRP */
268 	if (btc->brp_inc > 1)
269 		brp64 *= btc->brp_inc;
270 	bt->brp = (u32)brp64;
271 
272 	if (bt->brp < btc->brp_min || bt->brp > btc->brp_max)
273 		return -EINVAL;
274 
275 	alltseg = bt->prop_seg + bt->phase_seg1 + bt->phase_seg2 + 1;
276 	bt->bitrate = priv->clock.freq / (bt->brp * alltseg);
277 	bt->sample_point = ((tseg1 + 1) * 1000) / alltseg;
278 
279 	return 0;
280 }
281 
can_get_bittiming(struct net_device * dev,struct can_bittiming * bt,const struct can_bittiming_const * btc)282 static int can_get_bittiming(struct net_device *dev, struct can_bittiming *bt,
283 			     const struct can_bittiming_const *btc)
284 {
285 	int err;
286 
287 	/* Check if the CAN device has bit-timing parameters */
288 	if (!btc)
289 		return -EOPNOTSUPP;
290 
291 	/*
292 	 * Depending on the given can_bittiming parameter structure the CAN
293 	 * timing parameters are calculated based on the provided bitrate OR
294 	 * alternatively the CAN timing parameters (tq, prop_seg, etc.) are
295 	 * provided directly which are then checked and fixed up.
296 	 */
297 	if (!bt->tq && bt->bitrate)
298 		err = can_calc_bittiming(dev, bt, btc);
299 	else if (bt->tq && !bt->bitrate)
300 		err = can_fixup_bittiming(dev, bt, btc);
301 	else
302 		err = -EINVAL;
303 
304 	return err;
305 }
306 
can_update_state_error_stats(struct net_device * dev,enum can_state new_state)307 static void can_update_state_error_stats(struct net_device *dev,
308 					 enum can_state new_state)
309 {
310 	struct can_priv *priv = netdev_priv(dev);
311 
312 	if (new_state <= priv->state)
313 		return;
314 
315 	switch (new_state) {
316 	case CAN_STATE_ERROR_WARNING:
317 		priv->can_stats.error_warning++;
318 		break;
319 	case CAN_STATE_ERROR_PASSIVE:
320 		priv->can_stats.error_passive++;
321 		break;
322 	case CAN_STATE_BUS_OFF:
323 		priv->can_stats.bus_off++;
324 		break;
325 	default:
326 		break;
327 	}
328 }
329 
can_tx_state_to_frame(struct net_device * dev,enum can_state state)330 static int can_tx_state_to_frame(struct net_device *dev, enum can_state state)
331 {
332 	switch (state) {
333 	case CAN_STATE_ERROR_ACTIVE:
334 		return CAN_ERR_CRTL_ACTIVE;
335 	case CAN_STATE_ERROR_WARNING:
336 		return CAN_ERR_CRTL_TX_WARNING;
337 	case CAN_STATE_ERROR_PASSIVE:
338 		return CAN_ERR_CRTL_TX_PASSIVE;
339 	default:
340 		return 0;
341 	}
342 }
343 
can_rx_state_to_frame(struct net_device * dev,enum can_state state)344 static int can_rx_state_to_frame(struct net_device *dev, enum can_state state)
345 {
346 	switch (state) {
347 	case CAN_STATE_ERROR_ACTIVE:
348 		return CAN_ERR_CRTL_ACTIVE;
349 	case CAN_STATE_ERROR_WARNING:
350 		return CAN_ERR_CRTL_RX_WARNING;
351 	case CAN_STATE_ERROR_PASSIVE:
352 		return CAN_ERR_CRTL_RX_PASSIVE;
353 	default:
354 		return 0;
355 	}
356 }
357 
can_change_state(struct net_device * dev,struct can_frame * cf,enum can_state tx_state,enum can_state rx_state)358 void can_change_state(struct net_device *dev, struct can_frame *cf,
359 		      enum can_state tx_state, enum can_state rx_state)
360 {
361 	struct can_priv *priv = netdev_priv(dev);
362 	enum can_state new_state = max(tx_state, rx_state);
363 
364 	if (unlikely(new_state == priv->state)) {
365 		netdev_warn(dev, "%s: oops, state did not change", __func__);
366 		return;
367 	}
368 
369 	netdev_dbg(dev, "New error state: %d\n", new_state);
370 
371 	can_update_state_error_stats(dev, new_state);
372 	priv->state = new_state;
373 
374 	if (unlikely(new_state == CAN_STATE_BUS_OFF)) {
375 		cf->can_id |= CAN_ERR_BUSOFF;
376 		return;
377 	}
378 
379 	cf->can_id |= CAN_ERR_CRTL;
380 	cf->data[1] |= tx_state >= rx_state ?
381 		       can_tx_state_to_frame(dev, tx_state) : 0;
382 	cf->data[1] |= tx_state <= rx_state ?
383 		       can_rx_state_to_frame(dev, rx_state) : 0;
384 }
385 EXPORT_SYMBOL_GPL(can_change_state);
386 
387 /*
388  * Local echo of CAN messages
389  *
390  * CAN network devices *should* support a local echo functionality
391  * (see Documentation/networking/can.txt). To test the handling of CAN
392  * interfaces that do not support the local echo both driver types are
393  * implemented. In the case that the driver does not support the echo
394  * the IFF_ECHO remains clear in dev->flags. This causes the PF_CAN core
395  * to perform the echo as a fallback solution.
396  */
can_flush_echo_skb(struct net_device * dev)397 static void can_flush_echo_skb(struct net_device *dev)
398 {
399 	struct can_priv *priv = netdev_priv(dev);
400 	struct net_device_stats *stats = &dev->stats;
401 	int i;
402 
403 	for (i = 0; i < priv->echo_skb_max; i++) {
404 		if (priv->echo_skb[i]) {
405 			kfree_skb(priv->echo_skb[i]);
406 			priv->echo_skb[i] = NULL;
407 			stats->tx_dropped++;
408 			stats->tx_aborted_errors++;
409 		}
410 	}
411 }
412 
413 /*
414  * Put the skb on the stack to be looped backed locally lateron
415  *
416  * The function is typically called in the start_xmit function
417  * of the device driver. The driver must protect access to
418  * priv->echo_skb, if necessary.
419  */
can_put_echo_skb(struct sk_buff * skb,struct net_device * dev,unsigned int idx)420 void can_put_echo_skb(struct sk_buff *skb, struct net_device *dev,
421 		      unsigned int idx)
422 {
423 	struct can_priv *priv = netdev_priv(dev);
424 
425 	BUG_ON(idx >= priv->echo_skb_max);
426 
427 	/* check flag whether this packet has to be looped back */
428 	if (!(dev->flags & IFF_ECHO) || skb->pkt_type != PACKET_LOOPBACK ||
429 	    (skb->protocol != htons(ETH_P_CAN) &&
430 	     skb->protocol != htons(ETH_P_CANFD))) {
431 		kfree_skb(skb);
432 		return;
433 	}
434 
435 	if (!priv->echo_skb[idx]) {
436 
437 		skb = can_create_echo_skb(skb);
438 		if (!skb)
439 			return;
440 
441 		/* make settings for echo to reduce code in irq context */
442 		skb->pkt_type = PACKET_BROADCAST;
443 		skb->ip_summed = CHECKSUM_UNNECESSARY;
444 		skb->dev = dev;
445 
446 		/* save this skb for tx interrupt echo handling */
447 		priv->echo_skb[idx] = skb;
448 	} else {
449 		/* locking problem with netif_stop_queue() ?? */
450 		netdev_err(dev, "%s: BUG! echo_skb is occupied!\n", __func__);
451 		kfree_skb(skb);
452 	}
453 }
454 EXPORT_SYMBOL_GPL(can_put_echo_skb);
455 
456 /*
457  * Get the skb from the stack and loop it back locally
458  *
459  * The function is typically called when the TX done interrupt
460  * is handled in the device driver. The driver must protect
461  * access to priv->echo_skb, if necessary.
462  */
can_get_echo_skb(struct net_device * dev,unsigned int idx)463 unsigned int can_get_echo_skb(struct net_device *dev, unsigned int idx)
464 {
465 	struct can_priv *priv = netdev_priv(dev);
466 
467 	BUG_ON(idx >= priv->echo_skb_max);
468 
469 	if (priv->echo_skb[idx]) {
470 		struct sk_buff *skb = priv->echo_skb[idx];
471 		struct can_frame *cf = (struct can_frame *)skb->data;
472 		u8 dlc = cf->can_dlc;
473 
474 		netif_rx(priv->echo_skb[idx]);
475 		priv->echo_skb[idx] = NULL;
476 
477 		return dlc;
478 	}
479 
480 	return 0;
481 }
482 EXPORT_SYMBOL_GPL(can_get_echo_skb);
483 
484 /*
485   * Remove the skb from the stack and free it.
486   *
487   * The function is typically called when TX failed.
488   */
can_free_echo_skb(struct net_device * dev,unsigned int idx)489 void can_free_echo_skb(struct net_device *dev, unsigned int idx)
490 {
491 	struct can_priv *priv = netdev_priv(dev);
492 
493 	BUG_ON(idx >= priv->echo_skb_max);
494 
495 	if (priv->echo_skb[idx]) {
496 		dev_kfree_skb_any(priv->echo_skb[idx]);
497 		priv->echo_skb[idx] = NULL;
498 	}
499 }
500 EXPORT_SYMBOL_GPL(can_free_echo_skb);
501 
502 /*
503  * CAN device restart for bus-off recovery
504  */
can_restart(struct net_device * dev)505 static void can_restart(struct net_device *dev)
506 {
507 	struct can_priv *priv = netdev_priv(dev);
508 	struct net_device_stats *stats = &dev->stats;
509 	struct sk_buff *skb;
510 	struct can_frame *cf;
511 	int err;
512 
513 	BUG_ON(netif_carrier_ok(dev));
514 
515 	/*
516 	 * No synchronization needed because the device is bus-off and
517 	 * no messages can come in or go out.
518 	 */
519 	can_flush_echo_skb(dev);
520 
521 	/* send restart message upstream */
522 	skb = alloc_can_err_skb(dev, &cf);
523 	if (skb == NULL) {
524 		err = -ENOMEM;
525 		goto restart;
526 	}
527 	cf->can_id |= CAN_ERR_RESTARTED;
528 
529 	netif_rx(skb);
530 
531 	stats->rx_packets++;
532 	stats->rx_bytes += cf->can_dlc;
533 
534 restart:
535 	netdev_dbg(dev, "restarted\n");
536 	priv->can_stats.restarts++;
537 
538 	/* Now restart the device */
539 	err = priv->do_set_mode(dev, CAN_MODE_START);
540 
541 	netif_carrier_on(dev);
542 	if (err)
543 		netdev_err(dev, "Error %d during restart", err);
544 }
545 
can_restart_work(struct work_struct * work)546 static void can_restart_work(struct work_struct *work)
547 {
548 	struct delayed_work *dwork = to_delayed_work(work);
549 	struct can_priv *priv = container_of(dwork, struct can_priv, restart_work);
550 
551 	can_restart(priv->dev);
552 }
553 
can_restart_now(struct net_device * dev)554 int can_restart_now(struct net_device *dev)
555 {
556 	struct can_priv *priv = netdev_priv(dev);
557 
558 	/*
559 	 * A manual restart is only permitted if automatic restart is
560 	 * disabled and the device is in the bus-off state
561 	 */
562 	if (priv->restart_ms)
563 		return -EINVAL;
564 	if (priv->state != CAN_STATE_BUS_OFF)
565 		return -EBUSY;
566 
567 	cancel_delayed_work_sync(&priv->restart_work);
568 	can_restart(dev);
569 
570 	return 0;
571 }
572 
573 /*
574  * CAN bus-off
575  *
576  * This functions should be called when the device goes bus-off to
577  * tell the netif layer that no more packets can be sent or received.
578  * If enabled, a timer is started to trigger bus-off recovery.
579  */
can_bus_off(struct net_device * dev)580 void can_bus_off(struct net_device *dev)
581 {
582 	struct can_priv *priv = netdev_priv(dev);
583 
584 	netdev_dbg(dev, "bus-off\n");
585 
586 	netif_carrier_off(dev);
587 
588 	if (priv->restart_ms)
589 		schedule_delayed_work(&priv->restart_work,
590 				      msecs_to_jiffies(priv->restart_ms));
591 }
592 EXPORT_SYMBOL_GPL(can_bus_off);
593 
can_setup(struct net_device * dev)594 static void can_setup(struct net_device *dev)
595 {
596 	dev->type = ARPHRD_CAN;
597 	dev->mtu = CAN_MTU;
598 	dev->hard_header_len = 0;
599 	dev->addr_len = 0;
600 	dev->tx_queue_len = 10;
601 
602 	/* New-style flags. */
603 	dev->flags = IFF_NOARP;
604 	dev->features = NETIF_F_HW_CSUM;
605 }
606 
alloc_can_skb(struct net_device * dev,struct can_frame ** cf)607 struct sk_buff *alloc_can_skb(struct net_device *dev, struct can_frame **cf)
608 {
609 	struct sk_buff *skb;
610 
611 	skb = netdev_alloc_skb(dev, sizeof(struct can_skb_priv) +
612 			       sizeof(struct can_frame));
613 	if (unlikely(!skb))
614 		return NULL;
615 
616 	skb->protocol = htons(ETH_P_CAN);
617 	skb->pkt_type = PACKET_BROADCAST;
618 	skb->ip_summed = CHECKSUM_UNNECESSARY;
619 
620 	skb_reset_mac_header(skb);
621 	skb_reset_network_header(skb);
622 	skb_reset_transport_header(skb);
623 
624 	can_skb_reserve(skb);
625 	can_skb_prv(skb)->ifindex = dev->ifindex;
626 	can_skb_prv(skb)->skbcnt = 0;
627 
628 	*cf = (struct can_frame *)skb_put(skb, sizeof(struct can_frame));
629 	memset(*cf, 0, sizeof(struct can_frame));
630 
631 	return skb;
632 }
633 EXPORT_SYMBOL_GPL(alloc_can_skb);
634 
alloc_canfd_skb(struct net_device * dev,struct canfd_frame ** cfd)635 struct sk_buff *alloc_canfd_skb(struct net_device *dev,
636 				struct canfd_frame **cfd)
637 {
638 	struct sk_buff *skb;
639 
640 	skb = netdev_alloc_skb(dev, sizeof(struct can_skb_priv) +
641 			       sizeof(struct canfd_frame));
642 	if (unlikely(!skb))
643 		return NULL;
644 
645 	skb->protocol = htons(ETH_P_CANFD);
646 	skb->pkt_type = PACKET_BROADCAST;
647 	skb->ip_summed = CHECKSUM_UNNECESSARY;
648 
649 	skb_reset_mac_header(skb);
650 	skb_reset_network_header(skb);
651 	skb_reset_transport_header(skb);
652 
653 	can_skb_reserve(skb);
654 	can_skb_prv(skb)->ifindex = dev->ifindex;
655 	can_skb_prv(skb)->skbcnt = 0;
656 
657 	*cfd = (struct canfd_frame *)skb_put(skb, sizeof(struct canfd_frame));
658 	memset(*cfd, 0, sizeof(struct canfd_frame));
659 
660 	return skb;
661 }
662 EXPORT_SYMBOL_GPL(alloc_canfd_skb);
663 
alloc_can_err_skb(struct net_device * dev,struct can_frame ** cf)664 struct sk_buff *alloc_can_err_skb(struct net_device *dev, struct can_frame **cf)
665 {
666 	struct sk_buff *skb;
667 
668 	skb = alloc_can_skb(dev, cf);
669 	if (unlikely(!skb))
670 		return NULL;
671 
672 	(*cf)->can_id = CAN_ERR_FLAG;
673 	(*cf)->can_dlc = CAN_ERR_DLC;
674 
675 	return skb;
676 }
677 EXPORT_SYMBOL_GPL(alloc_can_err_skb);
678 
679 /*
680  * Allocate and setup space for the CAN network device
681  */
alloc_candev(int sizeof_priv,unsigned int echo_skb_max)682 struct net_device *alloc_candev(int sizeof_priv, unsigned int echo_skb_max)
683 {
684 	struct net_device *dev;
685 	struct can_priv *priv;
686 	int size;
687 
688 	if (echo_skb_max)
689 		size = ALIGN(sizeof_priv, sizeof(struct sk_buff *)) +
690 			echo_skb_max * sizeof(struct sk_buff *);
691 	else
692 		size = sizeof_priv;
693 
694 	dev = alloc_netdev(size, "can%d", NET_NAME_UNKNOWN, can_setup);
695 	if (!dev)
696 		return NULL;
697 
698 	priv = netdev_priv(dev);
699 	priv->dev = dev;
700 
701 	if (echo_skb_max) {
702 		priv->echo_skb_max = echo_skb_max;
703 		priv->echo_skb = (void *)priv +
704 			ALIGN(sizeof_priv, sizeof(struct sk_buff *));
705 	}
706 
707 	priv->state = CAN_STATE_STOPPED;
708 
709 	INIT_DELAYED_WORK(&priv->restart_work, can_restart_work);
710 
711 	return dev;
712 }
713 EXPORT_SYMBOL_GPL(alloc_candev);
714 
715 /*
716  * Free space of the CAN network device
717  */
free_candev(struct net_device * dev)718 void free_candev(struct net_device *dev)
719 {
720 	free_netdev(dev);
721 }
722 EXPORT_SYMBOL_GPL(free_candev);
723 
724 /*
725  * changing MTU and control mode for CAN/CANFD devices
726  */
can_change_mtu(struct net_device * dev,int new_mtu)727 int can_change_mtu(struct net_device *dev, int new_mtu)
728 {
729 	struct can_priv *priv = netdev_priv(dev);
730 
731 	/* Do not allow changing the MTU while running */
732 	if (dev->flags & IFF_UP)
733 		return -EBUSY;
734 
735 	/* allow change of MTU according to the CANFD ability of the device */
736 	switch (new_mtu) {
737 	case CAN_MTU:
738 		/* 'CANFD-only' controllers can not switch to CAN_MTU */
739 		if (priv->ctrlmode_static & CAN_CTRLMODE_FD)
740 			return -EINVAL;
741 
742 		priv->ctrlmode &= ~CAN_CTRLMODE_FD;
743 		break;
744 
745 	case CANFD_MTU:
746 		/* check for potential CANFD ability */
747 		if (!(priv->ctrlmode_supported & CAN_CTRLMODE_FD) &&
748 		    !(priv->ctrlmode_static & CAN_CTRLMODE_FD))
749 			return -EINVAL;
750 
751 		priv->ctrlmode |= CAN_CTRLMODE_FD;
752 		break;
753 
754 	default:
755 		return -EINVAL;
756 	}
757 
758 	dev->mtu = new_mtu;
759 	return 0;
760 }
761 EXPORT_SYMBOL_GPL(can_change_mtu);
762 
763 /*
764  * Common open function when the device gets opened.
765  *
766  * This function should be called in the open function of the device
767  * driver.
768  */
open_candev(struct net_device * dev)769 int open_candev(struct net_device *dev)
770 {
771 	struct can_priv *priv = netdev_priv(dev);
772 
773 	if (!priv->bittiming.bitrate) {
774 		netdev_err(dev, "bit-timing not yet defined\n");
775 		return -EINVAL;
776 	}
777 
778 	/* For CAN FD the data bitrate has to be >= the arbitration bitrate */
779 	if ((priv->ctrlmode & CAN_CTRLMODE_FD) &&
780 	    (!priv->data_bittiming.bitrate ||
781 	     (priv->data_bittiming.bitrate < priv->bittiming.bitrate))) {
782 		netdev_err(dev, "incorrect/missing data bit-timing\n");
783 		return -EINVAL;
784 	}
785 
786 	/* Switch carrier on if device was stopped while in bus-off state */
787 	if (!netif_carrier_ok(dev))
788 		netif_carrier_on(dev);
789 
790 	return 0;
791 }
792 EXPORT_SYMBOL_GPL(open_candev);
793 
794 /*
795  * Common close function for cleanup before the device gets closed.
796  *
797  * This function should be called in the close function of the device
798  * driver.
799  */
close_candev(struct net_device * dev)800 void close_candev(struct net_device *dev)
801 {
802 	struct can_priv *priv = netdev_priv(dev);
803 
804 	cancel_delayed_work_sync(&priv->restart_work);
805 	can_flush_echo_skb(dev);
806 }
807 EXPORT_SYMBOL_GPL(close_candev);
808 
809 /*
810  * CAN netlink interface
811  */
812 static const struct nla_policy can_policy[IFLA_CAN_MAX + 1] = {
813 	[IFLA_CAN_STATE]	= { .type = NLA_U32 },
814 	[IFLA_CAN_CTRLMODE]	= { .len = sizeof(struct can_ctrlmode) },
815 	[IFLA_CAN_RESTART_MS]	= { .type = NLA_U32 },
816 	[IFLA_CAN_RESTART]	= { .type = NLA_U32 },
817 	[IFLA_CAN_BITTIMING]	= { .len = sizeof(struct can_bittiming) },
818 	[IFLA_CAN_BITTIMING_CONST]
819 				= { .len = sizeof(struct can_bittiming_const) },
820 	[IFLA_CAN_CLOCK]	= { .len = sizeof(struct can_clock) },
821 	[IFLA_CAN_BERR_COUNTER]	= { .len = sizeof(struct can_berr_counter) },
822 	[IFLA_CAN_DATA_BITTIMING]
823 				= { .len = sizeof(struct can_bittiming) },
824 	[IFLA_CAN_DATA_BITTIMING_CONST]
825 				= { .len = sizeof(struct can_bittiming_const) },
826 };
827 
can_validate(struct nlattr * tb[],struct nlattr * data[])828 static int can_validate(struct nlattr *tb[], struct nlattr *data[])
829 {
830 	bool is_can_fd = false;
831 
832 	/* Make sure that valid CAN FD configurations always consist of
833 	 * - nominal/arbitration bittiming
834 	 * - data bittiming
835 	 * - control mode with CAN_CTRLMODE_FD set
836 	 */
837 
838 	if (!data)
839 		return 0;
840 
841 	if (data[IFLA_CAN_CTRLMODE]) {
842 		struct can_ctrlmode *cm = nla_data(data[IFLA_CAN_CTRLMODE]);
843 
844 		is_can_fd = cm->flags & cm->mask & CAN_CTRLMODE_FD;
845 	}
846 
847 	if (is_can_fd) {
848 		if (!data[IFLA_CAN_BITTIMING] || !data[IFLA_CAN_DATA_BITTIMING])
849 			return -EOPNOTSUPP;
850 	}
851 
852 	if (data[IFLA_CAN_DATA_BITTIMING]) {
853 		if (!is_can_fd || !data[IFLA_CAN_BITTIMING])
854 			return -EOPNOTSUPP;
855 	}
856 
857 	return 0;
858 }
859 
can_changelink(struct net_device * dev,struct nlattr * tb[],struct nlattr * data[])860 static int can_changelink(struct net_device *dev,
861 			  struct nlattr *tb[], struct nlattr *data[])
862 {
863 	struct can_priv *priv = netdev_priv(dev);
864 	int err;
865 
866 	/* We need synchronization with dev->stop() */
867 	ASSERT_RTNL();
868 
869 	if (data[IFLA_CAN_BITTIMING]) {
870 		struct can_bittiming bt;
871 
872 		/* Do not allow changing bittiming while running */
873 		if (dev->flags & IFF_UP)
874 			return -EBUSY;
875 		memcpy(&bt, nla_data(data[IFLA_CAN_BITTIMING]), sizeof(bt));
876 		err = can_get_bittiming(dev, &bt, priv->bittiming_const);
877 		if (err)
878 			return err;
879 		memcpy(&priv->bittiming, &bt, sizeof(bt));
880 
881 		if (priv->do_set_bittiming) {
882 			/* Finally, set the bit-timing registers */
883 			err = priv->do_set_bittiming(dev);
884 			if (err)
885 				return err;
886 		}
887 	}
888 
889 	if (data[IFLA_CAN_CTRLMODE]) {
890 		struct can_ctrlmode *cm;
891 		u32 ctrlstatic;
892 		u32 maskedflags;
893 
894 		/* Do not allow changing controller mode while running */
895 		if (dev->flags & IFF_UP)
896 			return -EBUSY;
897 		cm = nla_data(data[IFLA_CAN_CTRLMODE]);
898 		ctrlstatic = priv->ctrlmode_static;
899 		maskedflags = cm->flags & cm->mask;
900 
901 		/* check whether provided bits are allowed to be passed */
902 		if (cm->mask & ~(priv->ctrlmode_supported | ctrlstatic))
903 			return -EOPNOTSUPP;
904 
905 		/* do not check for static fd-non-iso if 'fd' is disabled */
906 		if (!(maskedflags & CAN_CTRLMODE_FD))
907 			ctrlstatic &= ~CAN_CTRLMODE_FD_NON_ISO;
908 
909 		/* make sure static options are provided by configuration */
910 		if ((maskedflags & ctrlstatic) != ctrlstatic)
911 			return -EOPNOTSUPP;
912 
913 		/* clear bits to be modified and copy the flag values */
914 		priv->ctrlmode &= ~cm->mask;
915 		priv->ctrlmode |= maskedflags;
916 
917 		/* CAN_CTRLMODE_FD can only be set when driver supports FD */
918 		if (priv->ctrlmode & CAN_CTRLMODE_FD)
919 			dev->mtu = CANFD_MTU;
920 		else
921 			dev->mtu = CAN_MTU;
922 	}
923 
924 	if (data[IFLA_CAN_RESTART_MS]) {
925 		/* Do not allow changing restart delay while running */
926 		if (dev->flags & IFF_UP)
927 			return -EBUSY;
928 		priv->restart_ms = nla_get_u32(data[IFLA_CAN_RESTART_MS]);
929 	}
930 
931 	if (data[IFLA_CAN_RESTART]) {
932 		/* Do not allow a restart while not running */
933 		if (!(dev->flags & IFF_UP))
934 			return -EINVAL;
935 		err = can_restart_now(dev);
936 		if (err)
937 			return err;
938 	}
939 
940 	if (data[IFLA_CAN_DATA_BITTIMING]) {
941 		struct can_bittiming dbt;
942 
943 		/* Do not allow changing bittiming while running */
944 		if (dev->flags & IFF_UP)
945 			return -EBUSY;
946 		memcpy(&dbt, nla_data(data[IFLA_CAN_DATA_BITTIMING]),
947 		       sizeof(dbt));
948 		err = can_get_bittiming(dev, &dbt, priv->data_bittiming_const);
949 		if (err)
950 			return err;
951 		memcpy(&priv->data_bittiming, &dbt, sizeof(dbt));
952 
953 		if (priv->do_set_data_bittiming) {
954 			/* Finally, set the bit-timing registers */
955 			err = priv->do_set_data_bittiming(dev);
956 			if (err)
957 				return err;
958 		}
959 	}
960 
961 	return 0;
962 }
963 
can_get_size(const struct net_device * dev)964 static size_t can_get_size(const struct net_device *dev)
965 {
966 	struct can_priv *priv = netdev_priv(dev);
967 	size_t size = 0;
968 
969 	if (priv->bittiming.bitrate)				/* IFLA_CAN_BITTIMING */
970 		size += nla_total_size(sizeof(struct can_bittiming));
971 	if (priv->bittiming_const)				/* IFLA_CAN_BITTIMING_CONST */
972 		size += nla_total_size(sizeof(struct can_bittiming_const));
973 	size += nla_total_size(sizeof(struct can_clock));	/* IFLA_CAN_CLOCK */
974 	size += nla_total_size(sizeof(u32));			/* IFLA_CAN_STATE */
975 	size += nla_total_size(sizeof(struct can_ctrlmode));	/* IFLA_CAN_CTRLMODE */
976 	size += nla_total_size(sizeof(u32));			/* IFLA_CAN_RESTART_MS */
977 	if (priv->do_get_berr_counter)				/* IFLA_CAN_BERR_COUNTER */
978 		size += nla_total_size(sizeof(struct can_berr_counter));
979 	if (priv->data_bittiming.bitrate)			/* IFLA_CAN_DATA_BITTIMING */
980 		size += nla_total_size(sizeof(struct can_bittiming));
981 	if (priv->data_bittiming_const)				/* IFLA_CAN_DATA_BITTIMING_CONST */
982 		size += nla_total_size(sizeof(struct can_bittiming_const));
983 
984 	return size;
985 }
986 
can_fill_info(struct sk_buff * skb,const struct net_device * dev)987 static int can_fill_info(struct sk_buff *skb, const struct net_device *dev)
988 {
989 	struct can_priv *priv = netdev_priv(dev);
990 	struct can_ctrlmode cm = {.flags = priv->ctrlmode};
991 	struct can_berr_counter bec;
992 	enum can_state state = priv->state;
993 
994 	if (priv->do_get_state)
995 		priv->do_get_state(dev, &state);
996 
997 	if ((priv->bittiming.bitrate &&
998 	     nla_put(skb, IFLA_CAN_BITTIMING,
999 		     sizeof(priv->bittiming), &priv->bittiming)) ||
1000 
1001 	    (priv->bittiming_const &&
1002 	     nla_put(skb, IFLA_CAN_BITTIMING_CONST,
1003 		     sizeof(*priv->bittiming_const), priv->bittiming_const)) ||
1004 
1005 	    nla_put(skb, IFLA_CAN_CLOCK, sizeof(priv->clock), &priv->clock) ||
1006 	    nla_put_u32(skb, IFLA_CAN_STATE, state) ||
1007 	    nla_put(skb, IFLA_CAN_CTRLMODE, sizeof(cm), &cm) ||
1008 	    nla_put_u32(skb, IFLA_CAN_RESTART_MS, priv->restart_ms) ||
1009 
1010 	    (priv->do_get_berr_counter &&
1011 	     !priv->do_get_berr_counter(dev, &bec) &&
1012 	     nla_put(skb, IFLA_CAN_BERR_COUNTER, sizeof(bec), &bec)) ||
1013 
1014 	    (priv->data_bittiming.bitrate &&
1015 	     nla_put(skb, IFLA_CAN_DATA_BITTIMING,
1016 		     sizeof(priv->data_bittiming), &priv->data_bittiming)) ||
1017 
1018 	    (priv->data_bittiming_const &&
1019 	     nla_put(skb, IFLA_CAN_DATA_BITTIMING_CONST,
1020 		     sizeof(*priv->data_bittiming_const),
1021 		     priv->data_bittiming_const)))
1022 		return -EMSGSIZE;
1023 
1024 	return 0;
1025 }
1026 
can_get_xstats_size(const struct net_device * dev)1027 static size_t can_get_xstats_size(const struct net_device *dev)
1028 {
1029 	return sizeof(struct can_device_stats);
1030 }
1031 
can_fill_xstats(struct sk_buff * skb,const struct net_device * dev)1032 static int can_fill_xstats(struct sk_buff *skb, const struct net_device *dev)
1033 {
1034 	struct can_priv *priv = netdev_priv(dev);
1035 
1036 	if (nla_put(skb, IFLA_INFO_XSTATS,
1037 		    sizeof(priv->can_stats), &priv->can_stats))
1038 		goto nla_put_failure;
1039 	return 0;
1040 
1041 nla_put_failure:
1042 	return -EMSGSIZE;
1043 }
1044 
can_newlink(struct net * src_net,struct net_device * dev,struct nlattr * tb[],struct nlattr * data[])1045 static int can_newlink(struct net *src_net, struct net_device *dev,
1046 		       struct nlattr *tb[], struct nlattr *data[])
1047 {
1048 	return -EOPNOTSUPP;
1049 }
1050 
can_dellink(struct net_device * dev,struct list_head * head)1051 static void can_dellink(struct net_device *dev, struct list_head *head)
1052 {
1053 	return;
1054 }
1055 
1056 static struct rtnl_link_ops can_link_ops __read_mostly = {
1057 	.kind		= "can",
1058 	.maxtype	= IFLA_CAN_MAX,
1059 	.policy		= can_policy,
1060 	.setup		= can_setup,
1061 	.validate	= can_validate,
1062 	.newlink	= can_newlink,
1063 	.changelink	= can_changelink,
1064 	.dellink	= can_dellink,
1065 	.get_size	= can_get_size,
1066 	.fill_info	= can_fill_info,
1067 	.get_xstats_size = can_get_xstats_size,
1068 	.fill_xstats	= can_fill_xstats,
1069 };
1070 
1071 /*
1072  * Register the CAN network device
1073  */
register_candev(struct net_device * dev)1074 int register_candev(struct net_device *dev)
1075 {
1076 	dev->rtnl_link_ops = &can_link_ops;
1077 	return register_netdev(dev);
1078 }
1079 EXPORT_SYMBOL_GPL(register_candev);
1080 
1081 /*
1082  * Unregister the CAN network device
1083  */
unregister_candev(struct net_device * dev)1084 void unregister_candev(struct net_device *dev)
1085 {
1086 	unregister_netdev(dev);
1087 }
1088 EXPORT_SYMBOL_GPL(unregister_candev);
1089 
1090 /*
1091  * Test if a network device is a candev based device
1092  * and return the can_priv* if so.
1093  */
safe_candev_priv(struct net_device * dev)1094 struct can_priv *safe_candev_priv(struct net_device *dev)
1095 {
1096 	if ((dev->type != ARPHRD_CAN) || (dev->rtnl_link_ops != &can_link_ops))
1097 		return NULL;
1098 
1099 	return netdev_priv(dev);
1100 }
1101 EXPORT_SYMBOL_GPL(safe_candev_priv);
1102 
can_dev_init(void)1103 static __init int can_dev_init(void)
1104 {
1105 	int err;
1106 
1107 	can_led_notifier_init();
1108 
1109 	err = rtnl_link_register(&can_link_ops);
1110 	if (!err)
1111 		printk(KERN_INFO MOD_DESC "\n");
1112 
1113 	return err;
1114 }
1115 module_init(can_dev_init);
1116 
can_dev_exit(void)1117 static __exit void can_dev_exit(void)
1118 {
1119 	rtnl_link_unregister(&can_link_ops);
1120 
1121 	can_led_notifier_exit();
1122 }
1123 module_exit(can_dev_exit);
1124 
1125 MODULE_ALIAS_RTNL_LINK("can");
1126