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