Lines Matching +full:max +full:- +full:bitrate
1 // SPDX-License-Identifier: GPL-2.0-only
2 /* Copyright (C) 2005 Marc Kleine-Budde, Pengutronix
4 * Copyright (C) 2008-2009 Wolfgang Grandegger <wg@grandegger.com>
14 #include <linux/can/can-ml.h>
40 static const u8 len2dlc[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, /* 0 - 8 */
41 9, 9, 9, 9, /* 9 - 12 */
42 10, 10, 10, 10, /* 13 - 16 */
43 11, 11, 11, 11, /* 17 - 20 */
44 12, 12, 12, 12, /* 21 - 24 */
45 13, 13, 13, 13, 13, 13, 13, 13, /* 25 - 32 */
46 14, 14, 14, 14, 14, 14, 14, 14, /* 33 - 40 */
47 14, 14, 14, 14, 14, 14, 14, 14, /* 41 - 48 */
48 15, 15, 15, 15, 15, 15, 15, 15, /* 49 - 56 */
49 15, 15, 15, 15, 15, 15, 15, 15}; /* 57 - 64 */
62 #define CAN_CALC_MAX_ERROR 50 /* in one-tenth of a percent */
64 /* Bit-timing calculation derived from:
67 * Copyright 2004-2006 Pavel Pisa - DCE FELK CVUT cz
71 * Calculates proper bit-timing parameters for a specified bit-rate
72 * and sample-point, which can then be used to set the bit-timing
88 tseg2 = tseg + CAN_SYNC_SEG - in can_update_sample_point()
90 1000 - i; in can_update_sample_point()
91 tseg2 = clamp(tseg2, btc->tseg2_min, btc->tseg2_max); in can_update_sample_point()
92 tseg1 = tseg - tseg2; in can_update_sample_point()
93 if (tseg1 > btc->tseg1_max) { in can_update_sample_point()
94 tseg1 = btc->tseg1_max; in can_update_sample_point()
95 tseg2 = tseg - tseg1; in can_update_sample_point()
98 sample_point = 1000 * (tseg + CAN_SYNC_SEG - tseg2) / in can_update_sample_point()
100 sample_point_error = abs(sample_point_nominal - sample_point); in can_update_sample_point()
121 unsigned int bitrate; /* current bitrate */ in can_calc_bittiming() local
133 if (bt->sample_point) { in can_calc_bittiming()
134 sample_point_nominal = bt->sample_point; in can_calc_bittiming()
136 if (bt->bitrate > 800000) in can_calc_bittiming()
138 else if (bt->bitrate > 500000) in can_calc_bittiming()
145 for (tseg = (btc->tseg1_max + btc->tseg2_max) * 2 + 1; in can_calc_bittiming()
146 tseg >= (btc->tseg1_min + btc->tseg2_min) * 2; tseg--) { in can_calc_bittiming()
150 brp = priv->clock.freq / (tsegall * bt->bitrate) + tseg % 2; in can_calc_bittiming()
153 brp = (brp / btc->brp_inc) * btc->brp_inc; in can_calc_bittiming()
154 if (brp < btc->brp_min || brp > btc->brp_max) in can_calc_bittiming()
157 bitrate = priv->clock.freq / (brp * tsegall); in can_calc_bittiming()
158 bitrate_error = abs(bt->bitrate - bitrate); in can_calc_bittiming()
164 /* reset sample point error if we have a better bitrate */ in can_calc_bittiming()
183 /* Error in one-tenth of a percent */ in can_calc_bittiming()
185 do_div(v64, bt->bitrate); in can_calc_bittiming()
189 "bitrate error %d.%d%% too high\n", in can_calc_bittiming()
191 return -EDOM; in can_calc_bittiming()
193 netdev_warn(dev, "bitrate error %d.%d%%\n", in can_calc_bittiming()
198 bt->sample_point = can_update_sample_point(btc, sample_point_nominal, in can_calc_bittiming()
203 do_div(v64, priv->clock.freq); in can_calc_bittiming()
204 bt->tq = (u32)v64; in can_calc_bittiming()
205 bt->prop_seg = tseg1 / 2; in can_calc_bittiming()
206 bt->phase_seg1 = tseg1 - bt->prop_seg; in can_calc_bittiming()
207 bt->phase_seg2 = tseg2; in can_calc_bittiming()
210 if (!bt->sjw || !btc->sjw_max) { in can_calc_bittiming()
211 bt->sjw = 1; in can_calc_bittiming()
213 /* bt->sjw is at least 1 -> sanitize upper bound to sjw_max */ in can_calc_bittiming()
214 if (bt->sjw > btc->sjw_max) in can_calc_bittiming()
215 bt->sjw = btc->sjw_max; in can_calc_bittiming()
216 /* bt->sjw must not be higher than tseg2 */ in can_calc_bittiming()
217 if (tseg2 < bt->sjw) in can_calc_bittiming()
218 bt->sjw = tseg2; in can_calc_bittiming()
221 bt->brp = best_brp; in can_calc_bittiming()
223 /* real bitrate */ in can_calc_bittiming()
224 bt->bitrate = priv->clock.freq / in can_calc_bittiming()
225 (bt->brp * (CAN_SYNC_SEG + tseg1 + tseg2)); in can_calc_bittiming()
233 netdev_err(dev, "bit-timing calculation not available\n"); in can_calc_bittiming()
234 return -EINVAL; in can_calc_bittiming()
238 /* Checks the validity of the specified bit-timing parameters prop_seg,
239 * phase_seg1, phase_seg2 and sjw and tries to determine the bitrate
250 tseg1 = bt->prop_seg + bt->phase_seg1; in can_fixup_bittiming()
251 if (!bt->sjw) in can_fixup_bittiming()
252 bt->sjw = 1; in can_fixup_bittiming()
253 if (bt->sjw > btc->sjw_max || in can_fixup_bittiming()
254 tseg1 < btc->tseg1_min || tseg1 > btc->tseg1_max || in can_fixup_bittiming()
255 bt->phase_seg2 < btc->tseg2_min || bt->phase_seg2 > btc->tseg2_max) in can_fixup_bittiming()
256 return -ERANGE; in can_fixup_bittiming()
258 brp64 = (u64)priv->clock.freq * (u64)bt->tq; in can_fixup_bittiming()
259 if (btc->brp_inc > 1) in can_fixup_bittiming()
260 do_div(brp64, btc->brp_inc); in can_fixup_bittiming()
261 brp64 += 500000000UL - 1; in can_fixup_bittiming()
263 if (btc->brp_inc > 1) in can_fixup_bittiming()
264 brp64 *= btc->brp_inc; in can_fixup_bittiming()
265 bt->brp = (u32)brp64; in can_fixup_bittiming()
267 if (bt->brp < btc->brp_min || bt->brp > btc->brp_max) in can_fixup_bittiming()
268 return -EINVAL; in can_fixup_bittiming()
270 alltseg = bt->prop_seg + bt->phase_seg1 + bt->phase_seg2 + 1; in can_fixup_bittiming()
271 bt->bitrate = priv->clock.freq / (bt->brp * alltseg); in can_fixup_bittiming()
272 bt->sample_point = ((tseg1 + 1) * 1000) / alltseg; in can_fixup_bittiming()
277 /* Checks the validity of predefined bitrate settings */
287 if (bt->bitrate == bitrate_const[i]) in can_validate_bitrate()
291 if (i >= priv->bitrate_const_cnt) in can_validate_bitrate()
292 return -EINVAL; in can_validate_bitrate()
305 * timing parameters are calculated based on the provided bitrate OR in can_get_bittiming()
309 if (!bt->tq && bt->bitrate && btc) in can_get_bittiming()
311 else if (bt->tq && !bt->bitrate && btc) in can_get_bittiming()
313 else if (!bt->tq && bt->bitrate && bitrate_const) in can_get_bittiming()
317 err = -EINVAL; in can_get_bittiming()
327 if (new_state <= priv->state) in can_update_state_error_stats()
332 priv->can_stats.error_warning++; in can_update_state_error_stats()
335 priv->can_stats.error_passive++; in can_update_state_error_stats()
338 priv->can_stats.bus_off++; in can_update_state_error_stats()
399 enum can_state new_state = max(tx_state, rx_state); in can_change_state()
401 if (unlikely(new_state == priv->state)) { in can_change_state()
407 can_get_state_str(priv->state), priv->state, in can_change_state()
411 priv->state = new_state; in can_change_state()
417 cf->can_id |= CAN_ERR_BUSOFF; in can_change_state()
421 cf->can_id |= CAN_ERR_CRTL; in can_change_state()
422 cf->data[1] |= tx_state >= rx_state ? in can_change_state()
424 cf->data[1] |= tx_state <= rx_state ? in can_change_state()
435 * the IFF_ECHO remains clear in dev->flags. This causes the PF_CAN core
441 struct net_device_stats *stats = &dev->stats; in can_flush_echo_skb()
444 for (i = 0; i < priv->echo_skb_max; i++) { in can_flush_echo_skb()
445 if (priv->echo_skb[i]) { in can_flush_echo_skb()
446 kfree_skb(priv->echo_skb[i]); in can_flush_echo_skb()
447 priv->echo_skb[i] = NULL; in can_flush_echo_skb()
448 stats->tx_dropped++; in can_flush_echo_skb()
449 stats->tx_aborted_errors++; in can_flush_echo_skb()
458 * priv->echo_skb, if necessary.
465 BUG_ON(idx >= priv->echo_skb_max); in can_put_echo_skb()
468 if (!(dev->flags & IFF_ECHO) || skb->pkt_type != PACKET_LOOPBACK || in can_put_echo_skb()
469 (skb->protocol != htons(ETH_P_CAN) && in can_put_echo_skb()
470 skb->protocol != htons(ETH_P_CANFD))) { in can_put_echo_skb()
475 if (!priv->echo_skb[idx]) { in can_put_echo_skb()
478 return -ENOMEM; in can_put_echo_skb()
481 skb->pkt_type = PACKET_BROADCAST; in can_put_echo_skb()
482 skb->ip_summed = CHECKSUM_UNNECESSARY; in can_put_echo_skb()
483 skb->dev = dev; in can_put_echo_skb()
486 priv->echo_skb[idx] = skb; in can_put_echo_skb()
491 return -EBUSY; in can_put_echo_skb()
503 if (idx >= priv->echo_skb_max) { in __can_get_echo_skb()
504 netdev_err(dev, "%s: BUG! Trying to access can_priv::echo_skb out of bounds (%u/max %u)\n", in __can_get_echo_skb()
505 __func__, idx, priv->echo_skb_max); in __can_get_echo_skb()
509 if (priv->echo_skb[idx]) { in __can_get_echo_skb()
513 struct sk_buff *skb = priv->echo_skb[idx]; in __can_get_echo_skb()
514 struct canfd_frame *cf = (struct canfd_frame *)skb->data; in __can_get_echo_skb()
517 if (cf->can_id & CAN_RTR_FLAG) in __can_get_echo_skb()
520 *len_ptr = cf->len; in __can_get_echo_skb()
522 priv->echo_skb[idx] = NULL; in __can_get_echo_skb()
534 * access to priv->echo_skb, if necessary.
563 BUG_ON(idx >= priv->echo_skb_max); in can_free_echo_skb()
565 if (priv->echo_skb[idx]) { in can_free_echo_skb()
566 dev_kfree_skb_any(priv->echo_skb[idx]); in can_free_echo_skb()
567 priv->echo_skb[idx] = NULL; in can_free_echo_skb()
572 /* CAN device restart for bus-off recovery */
576 struct net_device_stats *stats = &dev->stats; in can_restart()
583 /* No synchronization needed because the device is bus-off and in can_restart()
593 cf->can_id |= CAN_ERR_RESTARTED; in can_restart()
597 stats->rx_packets++; in can_restart()
598 stats->rx_bytes += cf->can_dlc; in can_restart()
602 priv->can_stats.restarts++; in can_restart()
605 err = priv->do_set_mode(dev, CAN_MODE_START); in can_restart()
618 can_restart(priv->dev); in can_restart_work()
626 * disabled and the device is in the bus-off state in can_restart_now()
628 if (priv->restart_ms) in can_restart_now()
629 return -EINVAL; in can_restart_now()
630 if (priv->state != CAN_STATE_BUS_OFF) in can_restart_now()
631 return -EBUSY; in can_restart_now()
633 cancel_delayed_work_sync(&priv->restart_work); in can_restart_now()
639 /* CAN bus-off
641 * This functions should be called when the device goes bus-off to
643 * If enabled, a timer is started to trigger bus-off recovery.
649 if (priv->restart_ms) in can_bus_off()
650 netdev_info(dev, "bus-off, scheduling restart in %d ms\n", in can_bus_off()
651 priv->restart_ms); in can_bus_off()
653 netdev_info(dev, "bus-off\n"); in can_bus_off()
657 if (priv->restart_ms) in can_bus_off()
658 schedule_delayed_work(&priv->restart_work, in can_bus_off()
659 msecs_to_jiffies(priv->restart_ms)); in can_bus_off()
665 dev->type = ARPHRD_CAN; in can_setup()
666 dev->mtu = CAN_MTU; in can_setup()
667 dev->hard_header_len = 0; in can_setup()
668 dev->addr_len = 0; in can_setup()
669 dev->tx_queue_len = 10; in can_setup()
671 /* New-style flags. */ in can_setup()
672 dev->flags = IFF_NOARP; in can_setup()
673 dev->features = NETIF_F_HW_CSUM; in can_setup()
685 skb->protocol = htons(ETH_P_CAN); in alloc_can_skb()
686 skb->pkt_type = PACKET_BROADCAST; in alloc_can_skb()
687 skb->ip_summed = CHECKSUM_UNNECESSARY; in alloc_can_skb()
694 can_skb_prv(skb)->ifindex = dev->ifindex; in alloc_can_skb()
695 can_skb_prv(skb)->skbcnt = 0; in alloc_can_skb()
713 skb->protocol = htons(ETH_P_CANFD); in alloc_canfd_skb()
714 skb->pkt_type = PACKET_BROADCAST; in alloc_canfd_skb()
715 skb->ip_summed = CHECKSUM_UNNECESSARY; in alloc_canfd_skb()
722 can_skb_prv(skb)->ifindex = dev->ifindex; in alloc_canfd_skb()
723 can_skb_prv(skb)->skbcnt = 0; in alloc_canfd_skb()
739 (*cf)->can_id = CAN_ERR_FLAG; in alloc_can_err_skb()
740 (*cf)->can_dlc = CAN_ERR_DLC; in alloc_can_err_skb()
758 * +-------------------------+ in alloc_candev_mqs()
760 * +-------------------------+ in alloc_candev_mqs()
762 * +-------------------------+ in alloc_candev_mqs()
764 * +-------------------------+ in alloc_candev_mqs()
779 priv->dev = dev; in alloc_candev_mqs()
781 dev->ml_priv = (void *)priv + ALIGN(sizeof_priv, NETDEV_ALIGN); in alloc_candev_mqs()
784 priv->echo_skb_max = echo_skb_max; in alloc_candev_mqs()
785 priv->echo_skb = (void *)priv + in alloc_candev_mqs()
786 (size - echo_skb_max * sizeof(struct sk_buff *)); in alloc_candev_mqs()
789 priv->state = CAN_STATE_STOPPED; in alloc_candev_mqs()
791 INIT_DELAYED_WORK(&priv->restart_work, can_restart_work); in alloc_candev_mqs()
810 if (dev->flags & IFF_UP) in can_change_mtu()
811 return -EBUSY; in can_change_mtu()
816 /* 'CANFD-only' controllers can not switch to CAN_MTU */ in can_change_mtu()
817 if (priv->ctrlmode_static & CAN_CTRLMODE_FD) in can_change_mtu()
818 return -EINVAL; in can_change_mtu()
820 priv->ctrlmode &= ~CAN_CTRLMODE_FD; in can_change_mtu()
825 if (!(priv->ctrlmode_supported & CAN_CTRLMODE_FD) && in can_change_mtu()
826 !(priv->ctrlmode_static & CAN_CTRLMODE_FD)) in can_change_mtu()
827 return -EINVAL; in can_change_mtu()
829 priv->ctrlmode |= CAN_CTRLMODE_FD; in can_change_mtu()
833 return -EINVAL; in can_change_mtu()
836 dev->mtu = new_mtu; in can_change_mtu()
850 if (!priv->bittiming.bitrate) { in open_candev()
851 netdev_err(dev, "bit-timing not yet defined\n"); in open_candev()
852 return -EINVAL; in open_candev()
855 /* For CAN FD the data bitrate has to be >= the arbitration bitrate */ in open_candev()
856 if ((priv->ctrlmode & CAN_CTRLMODE_FD) && in open_candev()
857 (!priv->data_bittiming.bitrate || in open_candev()
858 priv->data_bittiming.bitrate < priv->bittiming.bitrate)) { in open_candev()
859 netdev_err(dev, "incorrect/missing data bit-timing\n"); in open_candev()
860 return -EINVAL; in open_candev()
863 /* Switch carrier on if device was stopped while in bus-off state */ in open_candev()
880 struct device_node *np = dev->dev.parent->of_node; in of_can_transceiver()
883 dn = of_get_child_by_name(np, "can-transceiver"); in of_can_transceiver()
887 ret = of_property_read_u32(dn, "max-bitrate", &priv->bitrate_max); in of_can_transceiver()
889 if ((ret && ret != -EINVAL) || (!ret && !priv->bitrate_max)) in of_can_transceiver()
890 netdev_warn(dev, "Invalid value for transceiver max bitrate. Ignoring bitrate limit.\n"); in of_can_transceiver()
904 cancel_delayed_work_sync(&priv->restart_work); in close_candev()
933 * - nominal/arbitration bittiming in can_validate()
934 * - data bittiming in can_validate()
935 * - control mode with CAN_CTRLMODE_FD set in can_validate()
944 is_can_fd = cm->flags & cm->mask & CAN_CTRLMODE_FD; in can_validate()
949 return -EOPNOTSUPP; in can_validate()
954 return -EOPNOTSUPP; in can_validate()
967 /* We need synchronization with dev->stop() */ in can_changelink()
974 if (dev->flags & IFF_UP) in can_changelink()
975 return -EBUSY; in can_changelink()
978 * bittiming_const if set, otherwise pass bitrate in can_changelink()
982 if (!priv->bittiming_const && !priv->do_set_bittiming) in can_changelink()
983 return -EOPNOTSUPP; in can_changelink()
987 priv->bittiming_const, in can_changelink()
988 priv->bitrate_const, in can_changelink()
989 priv->bitrate_const_cnt); in can_changelink()
993 if (priv->bitrate_max && bt.bitrate > priv->bitrate_max) { in can_changelink()
994 netdev_err(dev, "arbitration bitrate surpasses transceiver capabilities of %d bps\n", in can_changelink()
995 priv->bitrate_max); in can_changelink()
996 return -EINVAL; in can_changelink()
999 memcpy(&priv->bittiming, &bt, sizeof(bt)); in can_changelink()
1001 if (priv->do_set_bittiming) { in can_changelink()
1002 /* Finally, set the bit-timing registers */ in can_changelink()
1003 err = priv->do_set_bittiming(dev); in can_changelink()
1015 if (dev->flags & IFF_UP) in can_changelink()
1016 return -EBUSY; in can_changelink()
1018 ctrlstatic = priv->ctrlmode_static; in can_changelink()
1019 maskedflags = cm->flags & cm->mask; in can_changelink()
1022 if (cm->mask & ~(priv->ctrlmode_supported | ctrlstatic)) in can_changelink()
1023 return -EOPNOTSUPP; in can_changelink()
1025 /* do not check for static fd-non-iso if 'fd' is disabled */ in can_changelink()
1031 return -EOPNOTSUPP; in can_changelink()
1034 priv->ctrlmode &= ~cm->mask; in can_changelink()
1035 priv->ctrlmode |= maskedflags; in can_changelink()
1038 if (priv->ctrlmode & CAN_CTRLMODE_FD) in can_changelink()
1039 dev->mtu = CANFD_MTU; in can_changelink()
1041 dev->mtu = CAN_MTU; in can_changelink()
1046 if (dev->flags & IFF_UP) in can_changelink()
1047 return -EBUSY; in can_changelink()
1048 priv->restart_ms = nla_get_u32(data[IFLA_CAN_RESTART_MS]); in can_changelink()
1053 if (!(dev->flags & IFF_UP)) in can_changelink()
1054 return -EINVAL; in can_changelink()
1064 if (dev->flags & IFF_UP) in can_changelink()
1065 return -EBUSY; in can_changelink()
1068 * data_bittiming_const if set, otherwise pass bitrate in can_changelink()
1072 if (!priv->data_bittiming_const && !priv->do_set_data_bittiming) in can_changelink()
1073 return -EOPNOTSUPP; in can_changelink()
1078 priv->data_bittiming_const, in can_changelink()
1079 priv->data_bitrate_const, in can_changelink()
1080 priv->data_bitrate_const_cnt); in can_changelink()
1084 if (priv->bitrate_max && dbt.bitrate > priv->bitrate_max) { in can_changelink()
1085 netdev_err(dev, "canfd data bitrate surpasses transceiver capabilities of %d bps\n", in can_changelink()
1086 priv->bitrate_max); in can_changelink()
1087 return -EINVAL; in can_changelink()
1090 memcpy(&priv->data_bittiming, &dbt, sizeof(dbt)); in can_changelink()
1092 if (priv->do_set_data_bittiming) { in can_changelink()
1093 /* Finally, set the bit-timing registers */ in can_changelink()
1094 err = priv->do_set_data_bittiming(dev); in can_changelink()
1102 const unsigned int num_term = priv->termination_const_cnt; in can_changelink()
1105 if (!priv->do_set_termination) in can_changelink()
1106 return -EOPNOTSUPP; in can_changelink()
1110 if (termval == priv->termination_const[i]) in can_changelink()
1114 return -EINVAL; in can_changelink()
1117 err = priv->do_set_termination(dev, termval); in can_changelink()
1121 priv->termination = termval; in can_changelink()
1132 if (priv->bittiming.bitrate) /* IFLA_CAN_BITTIMING */ in can_get_size()
1134 if (priv->bittiming_const) /* IFLA_CAN_BITTIMING_CONST */ in can_get_size()
1140 if (priv->do_get_berr_counter) /* IFLA_CAN_BERR_COUNTER */ in can_get_size()
1142 if (priv->data_bittiming.bitrate) /* IFLA_CAN_DATA_BITTIMING */ in can_get_size()
1144 if (priv->data_bittiming_const) /* IFLA_CAN_DATA_BITTIMING_CONST */ in can_get_size()
1146 if (priv->termination_const) { in can_get_size()
1147 size += nla_total_size(sizeof(priv->termination)); /* IFLA_CAN_TERMINATION */ in can_get_size()
1148 size += nla_total_size(sizeof(*priv->termination_const) * /* IFLA_CAN_TERMINATION_CONST */ in can_get_size()
1149 priv->termination_const_cnt); in can_get_size()
1151 if (priv->bitrate_const) /* IFLA_CAN_BITRATE_CONST */ in can_get_size()
1152 size += nla_total_size(sizeof(*priv->bitrate_const) * in can_get_size()
1153 priv->bitrate_const_cnt); in can_get_size()
1154 if (priv->data_bitrate_const) /* IFLA_CAN_DATA_BITRATE_CONST */ in can_get_size()
1155 size += nla_total_size(sizeof(*priv->data_bitrate_const) * in can_get_size()
1156 priv->data_bitrate_const_cnt); in can_get_size()
1157 size += sizeof(priv->bitrate_max); /* IFLA_CAN_BITRATE_MAX */ in can_get_size()
1165 struct can_ctrlmode cm = {.flags = priv->ctrlmode}; in can_fill_info()
1167 enum can_state state = priv->state; in can_fill_info()
1169 if (priv->do_get_state) in can_fill_info()
1170 priv->do_get_state(dev, &state); in can_fill_info()
1172 if ((priv->bittiming.bitrate && in can_fill_info()
1174 sizeof(priv->bittiming), &priv->bittiming)) || in can_fill_info()
1176 (priv->bittiming_const && in can_fill_info()
1178 sizeof(*priv->bittiming_const), priv->bittiming_const)) || in can_fill_info()
1180 nla_put(skb, IFLA_CAN_CLOCK, sizeof(priv->clock), &priv->clock) || in can_fill_info()
1183 nla_put_u32(skb, IFLA_CAN_RESTART_MS, priv->restart_ms) || in can_fill_info()
1185 (priv->do_get_berr_counter && in can_fill_info()
1186 !priv->do_get_berr_counter(dev, &bec) && in can_fill_info()
1189 (priv->data_bittiming.bitrate && in can_fill_info()
1191 sizeof(priv->data_bittiming), &priv->data_bittiming)) || in can_fill_info()
1193 (priv->data_bittiming_const && in can_fill_info()
1195 sizeof(*priv->data_bittiming_const), in can_fill_info()
1196 priv->data_bittiming_const)) || in can_fill_info()
1198 (priv->termination_const && in can_fill_info()
1199 (nla_put_u16(skb, IFLA_CAN_TERMINATION, priv->termination) || in can_fill_info()
1201 sizeof(*priv->termination_const) * in can_fill_info()
1202 priv->termination_const_cnt, in can_fill_info()
1203 priv->termination_const))) || in can_fill_info()
1205 (priv->bitrate_const && in can_fill_info()
1207 sizeof(*priv->bitrate_const) * in can_fill_info()
1208 priv->bitrate_const_cnt, in can_fill_info()
1209 priv->bitrate_const)) || in can_fill_info()
1211 (priv->data_bitrate_const && in can_fill_info()
1213 sizeof(*priv->data_bitrate_const) * in can_fill_info()
1214 priv->data_bitrate_const_cnt, in can_fill_info()
1215 priv->data_bitrate_const)) || in can_fill_info()
1218 sizeof(priv->bitrate_max), in can_fill_info()
1219 &priv->bitrate_max)) in can_fill_info()
1222 return -EMSGSIZE; in can_fill_info()
1237 sizeof(priv->can_stats), &priv->can_stats)) in can_fill_xstats()
1242 return -EMSGSIZE; in can_fill_xstats()
1249 return -EOPNOTSUPP; in can_newlink()
1280 if ((!priv->termination_const != !priv->termination_const_cnt) || in register_candev()
1281 (!priv->termination_const != !priv->do_set_termination)) in register_candev()
1282 return -EINVAL; in register_candev()
1284 if (!priv->bitrate_const != !priv->bitrate_const_cnt) in register_candev()
1285 return -EINVAL; in register_candev()
1287 if (!priv->data_bitrate_const != !priv->data_bitrate_const_cnt) in register_candev()
1288 return -EINVAL; in register_candev()
1290 dev->rtnl_link_ops = &can_link_ops; in register_candev()
1309 if (dev->type != ARPHRD_CAN || dev->rtnl_link_ops != &can_link_ops) in safe_candev_priv()