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 <net/rtnetlink.h>
  31
  32#define MOD_DESC "CAN device driver interface"
  33
  34MODULE_DESCRIPTION(MOD_DESC);
  35MODULE_LICENSE("GPL v2");
  36MODULE_AUTHOR("Wolfgang Grandegger <wg@grandegger.com>");
  37
  38/* CAN DLC to real data length conversion helpers */
  39
  40static 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 */
  44u8 can_dlc2len(u8 can_dlc)
  45{
  46        return dlc2len[can_dlc & 0x0F];
  47}
  48EXPORT_SYMBOL_GPL(can_dlc2len);
  49
  50static 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 */
  62u8 can_len2dlc(u8 len)
  63{
  64        if (unlikely(len > 64))
  65                return 0xF;
  66
  67        return len2dlc[len];
  68}
  69EXPORT_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 */
  88static 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
 124static 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 */
 234static 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 */
 248static 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
 282/* Checks the validity of predefined bitrate settings */
 283static int can_validate_bitrate(struct net_device *dev, struct can_bittiming *bt,
 284                                const u32 *bitrate_const,
 285                                const unsigned int bitrate_const_cnt)
 286{
 287        struct can_priv *priv = netdev_priv(dev);
 288        unsigned int i;
 289
 290        for (i = 0; i < bitrate_const_cnt; i++) {
 291                if (bt->bitrate == bitrate_const[i])
 292                        break;
 293        }
 294
 295        if (i >= priv->bitrate_const_cnt)
 296                return -EINVAL;
 297
 298        return 0;
 299}
 300
 301static int can_get_bittiming(struct net_device *dev, struct can_bittiming *bt,
 302                             const struct can_bittiming_const *btc,
 303                             const u32 *bitrate_const,
 304                             const unsigned int bitrate_const_cnt)
 305{
 306        int err;
 307
 308        /*
 309         * Depending on the given can_bittiming parameter structure the CAN
 310         * timing parameters are calculated based on the provided bitrate OR
 311         * alternatively the CAN timing parameters (tq, prop_seg, etc.) are
 312         * provided directly which are then checked and fixed up.
 313         */
 314        if (!bt->tq && bt->bitrate && btc)
 315                err = can_calc_bittiming(dev, bt, btc);
 316        else if (bt->tq && !bt->bitrate && btc)
 317                err = can_fixup_bittiming(dev, bt, btc);
 318        else if (!bt->tq && bt->bitrate && bitrate_const)
 319                err = can_validate_bitrate(dev, bt, bitrate_const,
 320                                           bitrate_const_cnt);
 321        else
 322                err = -EINVAL;
 323
 324        return err;
 325}
 326
 327static void can_update_state_error_stats(struct net_device *dev,
 328                                         enum can_state new_state)
 329{
 330        struct can_priv *priv = netdev_priv(dev);
 331
 332        if (new_state <= priv->state)
 333                return;
 334
 335        switch (new_state) {
 336        case CAN_STATE_ERROR_WARNING:
 337                priv->can_stats.error_warning++;
 338                break;
 339        case CAN_STATE_ERROR_PASSIVE:
 340                priv->can_stats.error_passive++;
 341                break;
 342        case CAN_STATE_BUS_OFF:
 343                priv->can_stats.bus_off++;
 344                break;
 345        default:
 346                break;
 347        }
 348}
 349
 350static int can_tx_state_to_frame(struct net_device *dev, enum can_state state)
 351{
 352        switch (state) {
 353        case CAN_STATE_ERROR_ACTIVE:
 354                return CAN_ERR_CRTL_ACTIVE;
 355        case CAN_STATE_ERROR_WARNING:
 356                return CAN_ERR_CRTL_TX_WARNING;
 357        case CAN_STATE_ERROR_PASSIVE:
 358                return CAN_ERR_CRTL_TX_PASSIVE;
 359        default:
 360                return 0;
 361        }
 362}
 363
 364static int can_rx_state_to_frame(struct net_device *dev, enum can_state state)
 365{
 366        switch (state) {
 367        case CAN_STATE_ERROR_ACTIVE:
 368                return CAN_ERR_CRTL_ACTIVE;
 369        case CAN_STATE_ERROR_WARNING:
 370                return CAN_ERR_CRTL_RX_WARNING;
 371        case CAN_STATE_ERROR_PASSIVE:
 372                return CAN_ERR_CRTL_RX_PASSIVE;
 373        default:
 374                return 0;
 375        }
 376}
 377
 378void can_change_state(struct net_device *dev, struct can_frame *cf,
 379                      enum can_state tx_state, enum can_state rx_state)
 380{
 381        struct can_priv *priv = netdev_priv(dev);
 382        enum can_state new_state = max(tx_state, rx_state);
 383
 384        if (unlikely(new_state == priv->state)) {
 385                netdev_warn(dev, "%s: oops, state did not change", __func__);
 386                return;
 387        }
 388
 389        netdev_dbg(dev, "New error state: %d\n", new_state);
 390
 391        can_update_state_error_stats(dev, new_state);
 392        priv->state = new_state;
 393
 394        if (!cf)
 395                return;
 396
 397        if (unlikely(new_state == CAN_STATE_BUS_OFF)) {
 398                cf->can_id |= CAN_ERR_BUSOFF;
 399                return;
 400        }
 401
 402        cf->can_id |= CAN_ERR_CRTL;
 403        cf->data[1] |= tx_state >= rx_state ?
 404                       can_tx_state_to_frame(dev, tx_state) : 0;
 405        cf->data[1] |= tx_state <= rx_state ?
 406                       can_rx_state_to_frame(dev, rx_state) : 0;
 407}
 408EXPORT_SYMBOL_GPL(can_change_state);
 409
 410/*
 411 * Local echo of CAN messages
 412 *
 413 * CAN network devices *should* support a local echo functionality
 414 * (see Documentation/networking/can.txt). To test the handling of CAN
 415 * interfaces that do not support the local echo both driver types are
 416 * implemented. In the case that the driver does not support the echo
 417 * the IFF_ECHO remains clear in dev->flags. This causes the PF_CAN core
 418 * to perform the echo as a fallback solution.
 419 */
 420static void can_flush_echo_skb(struct net_device *dev)
 421{
 422        struct can_priv *priv = netdev_priv(dev);
 423        struct net_device_stats *stats = &dev->stats;
 424        int i;
 425
 426        for (i = 0; i < priv->echo_skb_max; i++) {
 427                if (priv->echo_skb[i]) {
 428                        kfree_skb(priv->echo_skb[i]);
 429                        priv->echo_skb[i] = NULL;
 430                        stats->tx_dropped++;
 431                        stats->tx_aborted_errors++;
 432                }
 433        }
 434}
 435
 436/*
 437 * Put the skb on the stack to be looped backed locally lateron
 438 *
 439 * The function is typically called in the start_xmit function
 440 * of the device driver. The driver must protect access to
 441 * priv->echo_skb, if necessary.
 442 */
 443void can_put_echo_skb(struct sk_buff *skb, struct net_device *dev,
 444                      unsigned int idx)
 445{
 446        struct can_priv *priv = netdev_priv(dev);
 447
 448        BUG_ON(idx >= priv->echo_skb_max);
 449
 450        /* check flag whether this packet has to be looped back */
 451        if (!(dev->flags & IFF_ECHO) || skb->pkt_type != PACKET_LOOPBACK ||
 452            (skb->protocol != htons(ETH_P_CAN) &&
 453             skb->protocol != htons(ETH_P_CANFD))) {
 454                kfree_skb(skb);
 455                return;
 456        }
 457
 458        if (!priv->echo_skb[idx]) {
 459
 460                skb = can_create_echo_skb(skb);
 461                if (!skb)
 462                        return;
 463
 464                /* make settings for echo to reduce code in irq context */
 465                skb->pkt_type = PACKET_BROADCAST;
 466                skb->ip_summed = CHECKSUM_UNNECESSARY;
 467                skb->dev = dev;
 468
 469                /* save this skb for tx interrupt echo handling */
 470                priv->echo_skb[idx] = skb;
 471        } else {
 472                /* locking problem with netif_stop_queue() ?? */
 473                netdev_err(dev, "%s: BUG! echo_skb is occupied!\n", __func__);
 474                kfree_skb(skb);
 475        }
 476}
 477EXPORT_SYMBOL_GPL(can_put_echo_skb);
 478
 479/*
 480 * Get the skb from the stack and loop it back locally
 481 *
 482 * The function is typically called when the TX done interrupt
 483 * is handled in the device driver. The driver must protect
 484 * access to priv->echo_skb, if necessary.
 485 */
 486unsigned int can_get_echo_skb(struct net_device *dev, unsigned int idx)
 487{
 488        struct can_priv *priv = netdev_priv(dev);
 489
 490        BUG_ON(idx >= priv->echo_skb_max);
 491
 492        if (priv->echo_skb[idx]) {
 493                struct sk_buff *skb = priv->echo_skb[idx];
 494                struct can_frame *cf = (struct can_frame *)skb->data;
 495                u8 dlc = cf->can_dlc;
 496
 497                netif_rx(priv->echo_skb[idx]);
 498                priv->echo_skb[idx] = NULL;
 499
 500                return dlc;
 501        }
 502
 503        return 0;
 504}
 505EXPORT_SYMBOL_GPL(can_get_echo_skb);
 506
 507/*
 508  * Remove the skb from the stack and free it.
 509  *
 510  * The function is typically called when TX failed.
 511  */
 512void can_free_echo_skb(struct net_device *dev, unsigned int idx)
 513{
 514        struct can_priv *priv = netdev_priv(dev);
 515
 516        BUG_ON(idx >= priv->echo_skb_max);
 517
 518        if (priv->echo_skb[idx]) {
 519                dev_kfree_skb_any(priv->echo_skb[idx]);
 520                priv->echo_skb[idx] = NULL;
 521        }
 522}
 523EXPORT_SYMBOL_GPL(can_free_echo_skb);
 524
 525/*
 526 * CAN device restart for bus-off recovery
 527 */
 528static void can_restart(struct net_device *dev)
 529{
 530        struct can_priv *priv = netdev_priv(dev);
 531        struct net_device_stats *stats = &dev->stats;
 532        struct sk_buff *skb;
 533        struct can_frame *cf;
 534        int err;
 535
 536        BUG_ON(netif_carrier_ok(dev));
 537
 538        /*
 539         * No synchronization needed because the device is bus-off and
 540         * no messages can come in or go out.
 541         */
 542        can_flush_echo_skb(dev);
 543
 544        /* send restart message upstream */
 545        skb = alloc_can_err_skb(dev, &cf);
 546        if (skb == NULL) {
 547                err = -ENOMEM;
 548                goto restart;
 549        }
 550        cf->can_id |= CAN_ERR_RESTARTED;
 551
 552        netif_rx(skb);
 553
 554        stats->rx_packets++;
 555        stats->rx_bytes += cf->can_dlc;
 556
 557restart:
 558        netdev_dbg(dev, "restarted\n");
 559        priv->can_stats.restarts++;
 560
 561        /* Now restart the device */
 562        err = priv->do_set_mode(dev, CAN_MODE_START);
 563
 564        netif_carrier_on(dev);
 565        if (err)
 566                netdev_err(dev, "Error %d during restart", err);
 567}
 568
 569static void can_restart_work(struct work_struct *work)
 570{
 571        struct delayed_work *dwork = to_delayed_work(work);
 572        struct can_priv *priv = container_of(dwork, struct can_priv, restart_work);
 573
 574        can_restart(priv->dev);
 575}
 576
 577int can_restart_now(struct net_device *dev)
 578{
 579        struct can_priv *priv = netdev_priv(dev);
 580
 581        /*
 582         * A manual restart is only permitted if automatic restart is
 583         * disabled and the device is in the bus-off state
 584         */
 585        if (priv->restart_ms)
 586                return -EINVAL;
 587        if (priv->state != CAN_STATE_BUS_OFF)
 588                return -EBUSY;
 589
 590        cancel_delayed_work_sync(&priv->restart_work);
 591        can_restart(dev);
 592
 593        return 0;
 594}
 595
 596/*
 597 * CAN bus-off
 598 *
 599 * This functions should be called when the device goes bus-off to
 600 * tell the netif layer that no more packets can be sent or received.
 601 * If enabled, a timer is started to trigger bus-off recovery.
 602 */
 603void can_bus_off(struct net_device *dev)
 604{
 605        struct can_priv *priv = netdev_priv(dev);
 606
 607        netdev_dbg(dev, "bus-off\n");
 608
 609        netif_carrier_off(dev);
 610
 611        if (priv->restart_ms)
 612                schedule_delayed_work(&priv->restart_work,
 613                                      msecs_to_jiffies(priv->restart_ms));
 614}
 615EXPORT_SYMBOL_GPL(can_bus_off);
 616
 617static void can_setup(struct net_device *dev)
 618{
 619        dev->type = ARPHRD_CAN;
 620        dev->mtu = CAN_MTU;
 621        dev->hard_header_len = 0;
 622        dev->addr_len = 0;
 623        dev->tx_queue_len = 10;
 624
 625        /* New-style flags. */
 626        dev->flags = IFF_NOARP;
 627        dev->features = NETIF_F_HW_CSUM;
 628}
 629
 630struct sk_buff *alloc_can_skb(struct net_device *dev, struct can_frame **cf)
 631{
 632        struct sk_buff *skb;
 633
 634        skb = netdev_alloc_skb(dev, sizeof(struct can_skb_priv) +
 635                               sizeof(struct can_frame));
 636        if (unlikely(!skb))
 637                return NULL;
 638
 639        skb->protocol = htons(ETH_P_CAN);
 640        skb->pkt_type = PACKET_BROADCAST;
 641        skb->ip_summed = CHECKSUM_UNNECESSARY;
 642
 643        skb_reset_mac_header(skb);
 644        skb_reset_network_header(skb);
 645        skb_reset_transport_header(skb);
 646
 647        can_skb_reserve(skb);
 648        can_skb_prv(skb)->ifindex = dev->ifindex;
 649        can_skb_prv(skb)->skbcnt = 0;
 650
 651        *cf = skb_put(skb, sizeof(struct can_frame));
 652        memset(*cf, 0, 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(skb, sizeof(struct canfd_frame));
 681        memset(*cfd, 0, sizeof(struct canfd_frame));
 682
 683        return skb;
 684}
 685EXPORT_SYMBOL_GPL(alloc_canfd_skb);
 686
 687struct sk_buff *alloc_can_err_skb(struct net_device *dev, struct can_frame **cf)
 688{
 689        struct sk_buff *skb;
 690
 691        skb = alloc_can_skb(dev, cf);
 692        if (unlikely(!skb))
 693                return NULL;
 694
 695        (*cf)->can_id = CAN_ERR_FLAG;
 696        (*cf)->can_dlc = CAN_ERR_DLC;
 697
 698        return skb;
 699}
 700EXPORT_SYMBOL_GPL(alloc_can_err_skb);
 701
 702/*
 703 * Allocate and setup space for the CAN network device
 704 */
 705struct net_device *alloc_candev(int sizeof_priv, unsigned int echo_skb_max)
 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(size, "can%d", NET_NAME_UNKNOWN, can_setup);
 718        if (!dev)
 719                return NULL;
 720
 721        priv = netdev_priv(dev);
 722        priv->dev = dev;
 723
 724        if (echo_skb_max) {
 725                priv->echo_skb_max = echo_skb_max;
 726                priv->echo_skb = (void *)priv +
 727                        ALIGN(sizeof_priv, sizeof(struct sk_buff *));
 728        }
 729
 730        priv->state = CAN_STATE_STOPPED;
 731
 732        INIT_DELAYED_WORK(&priv->restart_work, can_restart_work);
 733
 734        return dev;
 735}
 736EXPORT_SYMBOL_GPL(alloc_candev);
 737
 738/*
 739 * Free space of the CAN network device
 740 */
 741void free_candev(struct net_device *dev)
 742{
 743        free_netdev(dev);
 744}
 745EXPORT_SYMBOL_GPL(free_candev);
 746
 747/*
 748 * changing MTU and control mode for CAN/CANFD devices
 749 */
 750int can_change_mtu(struct net_device *dev, int new_mtu)
 751{
 752        struct can_priv *priv = netdev_priv(dev);
 753
 754        /* Do not allow changing the MTU while running */
 755        if (dev->flags & IFF_UP)
 756                return -EBUSY;
 757
 758        /* allow change of MTU according to the CANFD ability of the device */
 759        switch (new_mtu) {
 760        case CAN_MTU:
 761                /* 'CANFD-only' controllers can not switch to CAN_MTU */
 762                if (priv->ctrlmode_static & CAN_CTRLMODE_FD)
 763                        return -EINVAL;
 764
 765                priv->ctrlmode &= ~CAN_CTRLMODE_FD;
 766                break;
 767
 768        case CANFD_MTU:
 769                /* check for potential CANFD ability */
 770                if (!(priv->ctrlmode_supported & CAN_CTRLMODE_FD) &&
 771                    !(priv->ctrlmode_static & CAN_CTRLMODE_FD))
 772                        return -EINVAL;
 773
 774                priv->ctrlmode |= CAN_CTRLMODE_FD;
 775                break;
 776
 777        default:
 778                return -EINVAL;
 779        }
 780
 781        dev->mtu = new_mtu;
 782        return 0;
 783}
 784EXPORT_SYMBOL_GPL(can_change_mtu);
 785
 786/*
 787 * Common open function when the device gets opened.
 788 *
 789 * This function should be called in the open function of the device
 790 * driver.
 791 */
 792int open_candev(struct net_device *dev)
 793{
 794        struct can_priv *priv = netdev_priv(dev);
 795
 796        if (!priv->bittiming.bitrate) {
 797                netdev_err(dev, "bit-timing not yet defined\n");
 798                return -EINVAL;
 799        }
 800
 801        /* For CAN FD the data bitrate has to be >= the arbitration bitrate */
 802        if ((priv->ctrlmode & CAN_CTRLMODE_FD) &&
 803            (!priv->data_bittiming.bitrate ||
 804             (priv->data_bittiming.bitrate < priv->bittiming.bitrate))) {
 805                netdev_err(dev, "incorrect/missing data bit-timing\n");
 806                return -EINVAL;
 807        }
 808
 809        /* Switch carrier on if device was stopped while in bus-off state */
 810        if (!netif_carrier_ok(dev))
 811                netif_carrier_on(dev);
 812
 813        return 0;
 814}
 815EXPORT_SYMBOL_GPL(open_candev);
 816
 817/*
 818 * Common close function for cleanup before the device gets closed.
 819 *
 820 * This function should be called in the close function of the device
 821 * driver.
 822 */
 823void close_candev(struct net_device *dev)
 824{
 825        struct can_priv *priv = netdev_priv(dev);
 826
 827        cancel_delayed_work_sync(&priv->restart_work);
 828        can_flush_echo_skb(dev);
 829}
 830EXPORT_SYMBOL_GPL(close_candev);
 831
 832/*
 833 * CAN netlink interface
 834 */
 835static const struct nla_policy can_policy[IFLA_CAN_MAX + 1] = {
 836        [IFLA_CAN_STATE]        = { .type = NLA_U32 },
 837        [IFLA_CAN_CTRLMODE]     = { .len = sizeof(struct can_ctrlmode) },
 838        [IFLA_CAN_RESTART_MS]   = { .type = NLA_U32 },
 839        [IFLA_CAN_RESTART]      = { .type = NLA_U32 },
 840        [IFLA_CAN_BITTIMING]    = { .len = sizeof(struct can_bittiming) },
 841        [IFLA_CAN_BITTIMING_CONST]
 842                                = { .len = sizeof(struct can_bittiming_const) },
 843        [IFLA_CAN_CLOCK]        = { .len = sizeof(struct can_clock) },
 844        [IFLA_CAN_BERR_COUNTER] = { .len = sizeof(struct can_berr_counter) },
 845        [IFLA_CAN_DATA_BITTIMING]
 846                                = { .len = sizeof(struct can_bittiming) },
 847        [IFLA_CAN_DATA_BITTIMING_CONST]
 848                                = { .len = sizeof(struct can_bittiming_const) },
 849};
 850
 851static int can_validate(struct nlattr *tb[], struct nlattr *data[],
 852                        struct netlink_ext_ack *extack)
 853{
 854        bool is_can_fd = false;
 855
 856        /* Make sure that valid CAN FD configurations always consist of
 857         * - nominal/arbitration bittiming
 858         * - data bittiming
 859         * - control mode with CAN_CTRLMODE_FD set
 860         */
 861
 862        if (!data)
 863                return 0;
 864
 865        if (data[IFLA_CAN_CTRLMODE]) {
 866                struct can_ctrlmode *cm = nla_data(data[IFLA_CAN_CTRLMODE]);
 867
 868                is_can_fd = cm->flags & cm->mask & CAN_CTRLMODE_FD;
 869        }
 870
 871        if (is_can_fd) {
 872                if (!data[IFLA_CAN_BITTIMING] || !data[IFLA_CAN_DATA_BITTIMING])
 873                        return -EOPNOTSUPP;
 874        }
 875
 876        if (data[IFLA_CAN_DATA_BITTIMING]) {
 877                if (!is_can_fd || !data[IFLA_CAN_BITTIMING])
 878                        return -EOPNOTSUPP;
 879        }
 880
 881        return 0;
 882}
 883
 884static int can_changelink(struct net_device *dev, struct nlattr *tb[],
 885                          struct nlattr *data[],
 886                          struct netlink_ext_ack *extack)
 887{
 888        struct can_priv *priv = netdev_priv(dev);
 889        int err;
 890
 891        /* We need synchronization with dev->stop() */
 892        ASSERT_RTNL();
 893
 894        if (data[IFLA_CAN_BITTIMING]) {
 895                struct can_bittiming bt;
 896
 897                /* Do not allow changing bittiming while running */
 898                if (dev->flags & IFF_UP)
 899                        return -EBUSY;
 900
 901                /* Calculate bittiming parameters based on
 902                 * bittiming_const if set, otherwise pass bitrate
 903                 * directly via do_set_bitrate(). Bail out if neither
 904                 * is given.
 905                 */
 906                if (!priv->bittiming_const && !priv->do_set_bittiming)
 907                        return -EOPNOTSUPP;
 908
 909                memcpy(&bt, nla_data(data[IFLA_CAN_BITTIMING]), sizeof(bt));
 910                err = can_get_bittiming(dev, &bt,
 911                                        priv->bittiming_const,
 912                                        priv->bitrate_const,
 913                                        priv->bitrate_const_cnt);
 914                if (err)
 915                        return err;
 916                memcpy(&priv->bittiming, &bt, sizeof(bt));
 917
 918                if (priv->do_set_bittiming) {
 919                        /* Finally, set the bit-timing registers */
 920                        err = priv->do_set_bittiming(dev);
 921                        if (err)
 922                                return err;
 923                }
 924        }
 925
 926        if (data[IFLA_CAN_CTRLMODE]) {
 927                struct can_ctrlmode *cm;
 928                u32 ctrlstatic;
 929                u32 maskedflags;
 930
 931                /* Do not allow changing controller mode while running */
 932                if (dev->flags & IFF_UP)
 933                        return -EBUSY;
 934                cm = nla_data(data[IFLA_CAN_CTRLMODE]);
 935                ctrlstatic = priv->ctrlmode_static;
 936                maskedflags = cm->flags & cm->mask;
 937
 938                /* check whether provided bits are allowed to be passed */
 939                if (cm->mask & ~(priv->ctrlmode_supported | ctrlstatic))
 940                        return -EOPNOTSUPP;
 941
 942                /* do not check for static fd-non-iso if 'fd' is disabled */
 943                if (!(maskedflags & CAN_CTRLMODE_FD))
 944                        ctrlstatic &= ~CAN_CTRLMODE_FD_NON_ISO;
 945
 946                /* make sure static options are provided by configuration */
 947                if ((maskedflags & ctrlstatic) != ctrlstatic)
 948                        return -EOPNOTSUPP;
 949
 950                /* clear bits to be modified and copy the flag values */
 951                priv->ctrlmode &= ~cm->mask;
 952                priv->ctrlmode |= maskedflags;
 953
 954                /* CAN_CTRLMODE_FD can only be set when driver supports FD */
 955                if (priv->ctrlmode & CAN_CTRLMODE_FD)
 956                        dev->mtu = CANFD_MTU;
 957                else
 958                        dev->mtu = CAN_MTU;
 959        }
 960
 961        if (data[IFLA_CAN_RESTART_MS]) {
 962                /* Do not allow changing restart delay while running */
 963                if (dev->flags & IFF_UP)
 964                        return -EBUSY;
 965                priv->restart_ms = nla_get_u32(data[IFLA_CAN_RESTART_MS]);
 966        }
 967
 968        if (data[IFLA_CAN_RESTART]) {
 969                /* Do not allow a restart while not running */
 970                if (!(dev->flags & IFF_UP))
 971                        return -EINVAL;
 972                err = can_restart_now(dev);
 973                if (err)
 974                        return err;
 975        }
 976
 977        if (data[IFLA_CAN_DATA_BITTIMING]) {
 978                struct can_bittiming dbt;
 979
 980                /* Do not allow changing bittiming while running */
 981                if (dev->flags & IFF_UP)
 982                        return -EBUSY;
 983
 984                /* Calculate bittiming parameters based on
 985                 * data_bittiming_const if set, otherwise pass bitrate
 986                 * directly via do_set_bitrate(). Bail out if neither
 987                 * is given.
 988                 */
 989                if (!priv->data_bittiming_const && !priv->do_set_data_bittiming)
 990                        return -EOPNOTSUPP;
 991
 992                memcpy(&dbt, nla_data(data[IFLA_CAN_DATA_BITTIMING]),
 993                       sizeof(dbt));
 994                err = can_get_bittiming(dev, &dbt,
 995                                        priv->data_bittiming_const,
 996                                        priv->data_bitrate_const,
 997                                        priv->data_bitrate_const_cnt);
 998                if (err)
 999                        return err;
1000                memcpy(&priv->data_bittiming, &dbt, sizeof(dbt));
1001
1002                if (priv->do_set_data_bittiming) {
1003                        /* Finally, set the bit-timing registers */
1004                        err = priv->do_set_data_bittiming(dev);
1005                        if (err)
1006                                return err;
1007                }
1008        }
1009
1010        if (data[IFLA_CAN_TERMINATION]) {
1011                const u16 termval = nla_get_u16(data[IFLA_CAN_TERMINATION]);
1012                const unsigned int num_term = priv->termination_const_cnt;
1013                unsigned int i;
1014
1015                if (!priv->do_set_termination)
1016                        return -EOPNOTSUPP;
1017
1018                /* check whether given value is supported by the interface */
1019                for (i = 0; i < num_term; i++) {
1020                        if (termval == priv->termination_const[i])
1021                                break;
1022                }
1023                if (i >= num_term)
1024                        return -EINVAL;
1025
1026                /* Finally, set the termination value */
1027                err = priv->do_set_termination(dev, termval);
1028                if (err)
1029                        return err;
1030
1031                priv->termination = termval;
1032        }
1033
1034        return 0;
1035}
1036
1037static size_t can_get_size(const struct net_device *dev)
1038{
1039        struct can_priv *priv = netdev_priv(dev);
1040        size_t size = 0;
1041
1042        if (priv->bittiming.bitrate)                            /* IFLA_CAN_BITTIMING */
1043                size += nla_total_size(sizeof(struct can_bittiming));
1044        if (priv->bittiming_const)                              /* IFLA_CAN_BITTIMING_CONST */
1045                size += nla_total_size(sizeof(struct can_bittiming_const));
1046        size += nla_total_size(sizeof(struct can_clock));       /* IFLA_CAN_CLOCK */
1047        size += nla_total_size(sizeof(u32));                    /* IFLA_CAN_STATE */
1048        size += nla_total_size(sizeof(struct can_ctrlmode));    /* IFLA_CAN_CTRLMODE */
1049        size += nla_total_size(sizeof(u32));                    /* IFLA_CAN_RESTART_MS */
1050        if (priv->do_get_berr_counter)                          /* IFLA_CAN_BERR_COUNTER */
1051                size += nla_total_size(sizeof(struct can_berr_counter));
1052        if (priv->data_bittiming.bitrate)                       /* IFLA_CAN_DATA_BITTIMING */
1053                size += nla_total_size(sizeof(struct can_bittiming));
1054        if (priv->data_bittiming_const)                         /* IFLA_CAN_DATA_BITTIMING_CONST */
1055                size += nla_total_size(sizeof(struct can_bittiming_const));
1056        if (priv->termination_const) {
1057                size += nla_total_size(sizeof(priv->termination));              /* IFLA_CAN_TERMINATION */
1058                size += nla_total_size(sizeof(*priv->termination_const) *       /* IFLA_CAN_TERMINATION_CONST */
1059                                       priv->termination_const_cnt);
1060        }
1061        if (priv->bitrate_const)                                /* IFLA_CAN_BITRATE_CONST */
1062                size += nla_total_size(sizeof(*priv->bitrate_const) *
1063                                       priv->bitrate_const_cnt);
1064        if (priv->data_bitrate_const)                           /* IFLA_CAN_DATA_BITRATE_CONST */
1065                size += nla_total_size(sizeof(*priv->data_bitrate_const) *
1066                                       priv->data_bitrate_const_cnt);
1067
1068        return size;
1069}
1070
1071static int can_fill_info(struct sk_buff *skb, const struct net_device *dev)
1072{
1073        struct can_priv *priv = netdev_priv(dev);
1074        struct can_ctrlmode cm = {.flags = priv->ctrlmode};
1075        struct can_berr_counter bec;
1076        enum can_state state = priv->state;
1077
1078        if (priv->do_get_state)
1079                priv->do_get_state(dev, &state);
1080
1081        if ((priv->bittiming.bitrate &&
1082             nla_put(skb, IFLA_CAN_BITTIMING,
1083                     sizeof(priv->bittiming), &priv->bittiming)) ||
1084
1085            (priv->bittiming_const &&
1086             nla_put(skb, IFLA_CAN_BITTIMING_CONST,
1087                     sizeof(*priv->bittiming_const), priv->bittiming_const)) ||
1088
1089            nla_put(skb, IFLA_CAN_CLOCK, sizeof(priv->clock), &priv->clock) ||
1090            nla_put_u32(skb, IFLA_CAN_STATE, state) ||
1091            nla_put(skb, IFLA_CAN_CTRLMODE, sizeof(cm), &cm) ||
1092            nla_put_u32(skb, IFLA_CAN_RESTART_MS, priv->restart_ms) ||
1093
1094            (priv->do_get_berr_counter &&
1095             !priv->do_get_berr_counter(dev, &bec) &&
1096             nla_put(skb, IFLA_CAN_BERR_COUNTER, sizeof(bec), &bec)) ||
1097
1098            (priv->data_bittiming.bitrate &&
1099             nla_put(skb, IFLA_CAN_DATA_BITTIMING,
1100                     sizeof(priv->data_bittiming), &priv->data_bittiming)) ||
1101
1102            (priv->data_bittiming_const &&
1103             nla_put(skb, IFLA_CAN_DATA_BITTIMING_CONST,
1104                     sizeof(*priv->data_bittiming_const),
1105                     priv->data_bittiming_const)) ||
1106
1107            (priv->termination_const &&
1108             (nla_put_u16(skb, IFLA_CAN_TERMINATION, priv->termination) ||
1109              nla_put(skb, IFLA_CAN_TERMINATION_CONST,
1110                      sizeof(*priv->termination_const) *
1111                      priv->termination_const_cnt,
1112                      priv->termination_const))) ||
1113
1114            (priv->bitrate_const &&
1115             nla_put(skb, IFLA_CAN_BITRATE_CONST,
1116                     sizeof(*priv->bitrate_const) *
1117                     priv->bitrate_const_cnt,
1118                     priv->bitrate_const)) ||
1119
1120            (priv->data_bitrate_const &&
1121             nla_put(skb, IFLA_CAN_DATA_BITRATE_CONST,
1122                     sizeof(*priv->data_bitrate_const) *
1123                     priv->data_bitrate_const_cnt,
1124                     priv->data_bitrate_const))
1125            )
1126
1127                return -EMSGSIZE;
1128
1129        return 0;
1130}
1131
1132static size_t can_get_xstats_size(const struct net_device *dev)
1133{
1134        return sizeof(struct can_device_stats);
1135}
1136
1137static int can_fill_xstats(struct sk_buff *skb, const struct net_device *dev)
1138{
1139        struct can_priv *priv = netdev_priv(dev);
1140
1141        if (nla_put(skb, IFLA_INFO_XSTATS,
1142                    sizeof(priv->can_stats), &priv->can_stats))
1143                goto nla_put_failure;
1144        return 0;
1145
1146nla_put_failure:
1147        return -EMSGSIZE;
1148}
1149
1150static int can_newlink(struct net *src_net, struct net_device *dev,
1151                       struct nlattr *tb[], struct nlattr *data[],
1152                       struct netlink_ext_ack *extack)
1153{
1154        return -EOPNOTSUPP;
1155}
1156
1157static void can_dellink(struct net_device *dev, struct list_head *head)
1158{
1159        return;
1160}
1161
1162static struct rtnl_link_ops can_link_ops __read_mostly = {
1163        .kind           = "can",
1164        .maxtype        = IFLA_CAN_MAX,
1165        .policy         = can_policy,
1166        .setup          = can_setup,
1167        .validate       = can_validate,
1168        .newlink        = can_newlink,
1169        .changelink     = can_changelink,
1170        .dellink        = can_dellink,
1171        .get_size       = can_get_size,
1172        .fill_info      = can_fill_info,
1173        .get_xstats_size = can_get_xstats_size,
1174        .fill_xstats    = can_fill_xstats,
1175};
1176
1177/*
1178 * Register the CAN network device
1179 */
1180int register_candev(struct net_device *dev)
1181{
1182        struct can_priv *priv = netdev_priv(dev);
1183
1184        /* Ensure termination_const, termination_const_cnt and
1185         * do_set_termination consistency. All must be either set or
1186         * unset.
1187         */
1188        if ((!priv->termination_const != !priv->termination_const_cnt) ||
1189            (!priv->termination_const != !priv->do_set_termination))
1190                return -EINVAL;
1191
1192        if (!priv->bitrate_const != !priv->bitrate_const_cnt)
1193                return -EINVAL;
1194
1195        if (!priv->data_bitrate_const != !priv->data_bitrate_const_cnt)
1196                return -EINVAL;
1197
1198        dev->rtnl_link_ops = &can_link_ops;
1199        return register_netdev(dev);
1200}
1201EXPORT_SYMBOL_GPL(register_candev);
1202
1203/*
1204 * Unregister the CAN network device
1205 */
1206void unregister_candev(struct net_device *dev)
1207{
1208        unregister_netdev(dev);
1209}
1210EXPORT_SYMBOL_GPL(unregister_candev);
1211
1212/*
1213 * Test if a network device is a candev based device
1214 * and return the can_priv* if so.
1215 */
1216struct can_priv *safe_candev_priv(struct net_device *dev)
1217{
1218        if ((dev->type != ARPHRD_CAN) || (dev->rtnl_link_ops != &can_link_ops))
1219                return NULL;
1220
1221        return netdev_priv(dev);
1222}
1223EXPORT_SYMBOL_GPL(safe_candev_priv);
1224
1225static __init int can_dev_init(void)
1226{
1227        int err;
1228
1229        can_led_notifier_init();
1230
1231        err = rtnl_link_register(&can_link_ops);
1232        if (!err)
1233                printk(KERN_INFO MOD_DESC "\n");
1234
1235        return err;
1236}
1237module_init(can_dev_init);
1238
1239static __exit void can_dev_exit(void)
1240{
1241        rtnl_link_unregister(&can_link_ops);
1242
1243        can_led_notifier_exit();
1244}
1245module_exit(can_dev_exit);
1246
1247MODULE_ALIAS_RTNL_LINK("can");
1248