diff options
author | Thomas Gleixner <tglx@linutronix.de> | 2016-01-12 05:01:12 -0500 |
---|---|---|
committer | Thomas Gleixner <tglx@linutronix.de> | 2016-01-12 05:01:12 -0500 |
commit | 1f16f116b01c110db20ab808562c8b8bc3ee3d6e (patch) | |
tree | 44db563f64cf5f8d62af8f99a61e2b248c44ea3a /drivers/net/can | |
parent | 03724ac3d48f8f0e3caf1d30fa134f8fd96c94e2 (diff) | |
parent | f9eccf24615672896dc13251410c3f2f33a14f95 (diff) |
Merge branches 'clockevents/4.4-fixes' and 'clockevents/4.5-fixes' of http://git.linaro.org/people/daniel.lezcano/linux into timers/urgent
Pull in fixes from Daniel Lezcano:
- Fix the vt8500 timer leading to a system lock up when dealing with too
small delta (Roman Volkov)
- Select the CLKSRC_MMIO when the fsl_ftm_timer is enabled with COMPILE_TEST
(Daniel Lezcano)
- Prevent to compile timers using the 'iomem' API when the architecture has
not HAS_IOMEM set (Richard Weinberger)
Diffstat (limited to 'drivers/net/can')
-rw-r--r-- | drivers/net/can/bfin_can.c | 2 | ||||
-rw-r--r-- | drivers/net/can/c_can/c_can.c | 7 | ||||
-rw-r--r-- | drivers/net/can/cc770/cc770.c | 2 | ||||
-rw-r--r-- | drivers/net/can/flexcan.c | 4 | ||||
-rw-r--r-- | drivers/net/can/janz-ican3.c | 1 | ||||
-rw-r--r-- | drivers/net/can/m_can/m_can.c | 7 | ||||
-rw-r--r-- | drivers/net/can/pch_can.c | 3 | ||||
-rw-r--r-- | drivers/net/can/rcar_can.c | 11 | ||||
-rw-r--r-- | drivers/net/can/sja1000/sja1000.c | 4 | ||||
-rw-r--r-- | drivers/net/can/sun4i_can.c | 1 | ||||
-rw-r--r-- | drivers/net/can/ti_hecc.c | 7 | ||||
-rw-r--r-- | drivers/net/can/usb/ems_usb.c | 1 | ||||
-rw-r--r-- | drivers/net/can/usb/esd_usb2.c | 1 | ||||
-rw-r--r-- | drivers/net/can/usb/kvaser_usb.c | 5 | ||||
-rw-r--r-- | drivers/net/can/usb/usb_8dev.c | 4 | ||||
-rw-r--r-- | drivers/net/can/xilinx_can.c | 9 |
16 files changed, 24 insertions, 45 deletions
diff --git a/drivers/net/can/bfin_can.c b/drivers/net/can/bfin_can.c index 57dadd52b428..1deb8ff90a89 100644 --- a/drivers/net/can/bfin_can.c +++ b/drivers/net/can/bfin_can.c | |||
@@ -501,8 +501,6 @@ static int bfin_can_err(struct net_device *dev, u16 isrc, u16 status) | |||
501 | cf->data[2] |= CAN_ERR_PROT_FORM; | 501 | cf->data[2] |= CAN_ERR_PROT_FORM; |
502 | else if (status & SER) | 502 | else if (status & SER) |
503 | cf->data[2] |= CAN_ERR_PROT_STUFF; | 503 | cf->data[2] |= CAN_ERR_PROT_STUFF; |
504 | else | ||
505 | cf->data[2] |= CAN_ERR_PROT_UNSPEC; | ||
506 | } | 504 | } |
507 | 505 | ||
508 | priv->can.state = state; | 506 | priv->can.state = state; |
diff --git a/drivers/net/can/c_can/c_can.c b/drivers/net/can/c_can/c_can.c index 5d214d135332..f91b094288da 100644 --- a/drivers/net/can/c_can/c_can.c +++ b/drivers/net/can/c_can/c_can.c | |||
@@ -962,7 +962,6 @@ static int c_can_handle_bus_err(struct net_device *dev, | |||
962 | * type of the last error to occur on the CAN bus | 962 | * type of the last error to occur on the CAN bus |
963 | */ | 963 | */ |
964 | cf->can_id |= CAN_ERR_PROT | CAN_ERR_BUSERROR; | 964 | cf->can_id |= CAN_ERR_PROT | CAN_ERR_BUSERROR; |
965 | cf->data[2] |= CAN_ERR_PROT_UNSPEC; | ||
966 | 965 | ||
967 | switch (lec_type) { | 966 | switch (lec_type) { |
968 | case LEC_STUFF_ERROR: | 967 | case LEC_STUFF_ERROR: |
@@ -975,8 +974,7 @@ static int c_can_handle_bus_err(struct net_device *dev, | |||
975 | break; | 974 | break; |
976 | case LEC_ACK_ERROR: | 975 | case LEC_ACK_ERROR: |
977 | netdev_dbg(dev, "ack error\n"); | 976 | netdev_dbg(dev, "ack error\n"); |
978 | cf->data[3] |= (CAN_ERR_PROT_LOC_ACK | | 977 | cf->data[3] = CAN_ERR_PROT_LOC_ACK; |
979 | CAN_ERR_PROT_LOC_ACK_DEL); | ||
980 | break; | 978 | break; |
981 | case LEC_BIT1_ERROR: | 979 | case LEC_BIT1_ERROR: |
982 | netdev_dbg(dev, "bit1 error\n"); | 980 | netdev_dbg(dev, "bit1 error\n"); |
@@ -988,8 +986,7 @@ static int c_can_handle_bus_err(struct net_device *dev, | |||
988 | break; | 986 | break; |
989 | case LEC_CRC_ERROR: | 987 | case LEC_CRC_ERROR: |
990 | netdev_dbg(dev, "CRC error\n"); | 988 | netdev_dbg(dev, "CRC error\n"); |
991 | cf->data[3] |= (CAN_ERR_PROT_LOC_CRC_SEQ | | 989 | cf->data[3] = CAN_ERR_PROT_LOC_CRC_SEQ; |
992 | CAN_ERR_PROT_LOC_CRC_DEL); | ||
993 | break; | 990 | break; |
994 | default: | 991 | default: |
995 | break; | 992 | break; |
diff --git a/drivers/net/can/cc770/cc770.c b/drivers/net/can/cc770/cc770.c index 70a8cbb29e75..1e37313054f3 100644 --- a/drivers/net/can/cc770/cc770.c +++ b/drivers/net/can/cc770/cc770.c | |||
@@ -578,7 +578,7 @@ static int cc770_err(struct net_device *dev, u8 status) | |||
578 | cf->data[2] |= CAN_ERR_PROT_BIT0; | 578 | cf->data[2] |= CAN_ERR_PROT_BIT0; |
579 | break; | 579 | break; |
580 | case STAT_LEC_CRC: | 580 | case STAT_LEC_CRC: |
581 | cf->data[3] |= CAN_ERR_PROT_LOC_CRC_SEQ; | 581 | cf->data[3] = CAN_ERR_PROT_LOC_CRC_SEQ; |
582 | break; | 582 | break; |
583 | } | 583 | } |
584 | } | 584 | } |
diff --git a/drivers/net/can/flexcan.c b/drivers/net/can/flexcan.c index 868fe945e35a..41c0fc9f3b14 100644 --- a/drivers/net/can/flexcan.c +++ b/drivers/net/can/flexcan.c | |||
@@ -535,13 +535,13 @@ static void do_bus_err(struct net_device *dev, | |||
535 | if (reg_esr & FLEXCAN_ESR_ACK_ERR) { | 535 | if (reg_esr & FLEXCAN_ESR_ACK_ERR) { |
536 | netdev_dbg(dev, "ACK_ERR irq\n"); | 536 | netdev_dbg(dev, "ACK_ERR irq\n"); |
537 | cf->can_id |= CAN_ERR_ACK; | 537 | cf->can_id |= CAN_ERR_ACK; |
538 | cf->data[3] |= CAN_ERR_PROT_LOC_ACK; | 538 | cf->data[3] = CAN_ERR_PROT_LOC_ACK; |
539 | tx_errors = 1; | 539 | tx_errors = 1; |
540 | } | 540 | } |
541 | if (reg_esr & FLEXCAN_ESR_CRC_ERR) { | 541 | if (reg_esr & FLEXCAN_ESR_CRC_ERR) { |
542 | netdev_dbg(dev, "CRC_ERR irq\n"); | 542 | netdev_dbg(dev, "CRC_ERR irq\n"); |
543 | cf->data[2] |= CAN_ERR_PROT_BIT; | 543 | cf->data[2] |= CAN_ERR_PROT_BIT; |
544 | cf->data[3] |= CAN_ERR_PROT_LOC_CRC_SEQ; | 544 | cf->data[3] = CAN_ERR_PROT_LOC_CRC_SEQ; |
545 | rx_errors = 1; | 545 | rx_errors = 1; |
546 | } | 546 | } |
547 | if (reg_esr & FLEXCAN_ESR_FRM_ERR) { | 547 | if (reg_esr & FLEXCAN_ESR_FRM_ERR) { |
diff --git a/drivers/net/can/janz-ican3.c b/drivers/net/can/janz-ican3.c index c1e85368a198..5d04f5464faf 100644 --- a/drivers/net/can/janz-ican3.c +++ b/drivers/net/can/janz-ican3.c | |||
@@ -1096,7 +1096,6 @@ static int ican3_handle_cevtind(struct ican3_dev *mod, struct ican3_msg *msg) | |||
1096 | cf->data[2] |= CAN_ERR_PROT_STUFF; | 1096 | cf->data[2] |= CAN_ERR_PROT_STUFF; |
1097 | break; | 1097 | break; |
1098 | default: | 1098 | default: |
1099 | cf->data[2] |= CAN_ERR_PROT_UNSPEC; | ||
1100 | cf->data[3] = ecc & ECC_SEG; | 1099 | cf->data[3] = ecc & ECC_SEG; |
1101 | break; | 1100 | break; |
1102 | } | 1101 | } |
diff --git a/drivers/net/can/m_can/m_can.c b/drivers/net/can/m_can/m_can.c index ef655177bb5e..39cf911f7a1e 100644 --- a/drivers/net/can/m_can/m_can.c +++ b/drivers/net/can/m_can/m_can.c | |||
@@ -487,7 +487,6 @@ static int m_can_handle_lec_err(struct net_device *dev, | |||
487 | * type of the last error to occur on the CAN bus | 487 | * type of the last error to occur on the CAN bus |
488 | */ | 488 | */ |
489 | cf->can_id |= CAN_ERR_PROT | CAN_ERR_BUSERROR; | 489 | cf->can_id |= CAN_ERR_PROT | CAN_ERR_BUSERROR; |
490 | cf->data[2] |= CAN_ERR_PROT_UNSPEC; | ||
491 | 490 | ||
492 | switch (lec_type) { | 491 | switch (lec_type) { |
493 | case LEC_STUFF_ERROR: | 492 | case LEC_STUFF_ERROR: |
@@ -500,8 +499,7 @@ static int m_can_handle_lec_err(struct net_device *dev, | |||
500 | break; | 499 | break; |
501 | case LEC_ACK_ERROR: | 500 | case LEC_ACK_ERROR: |
502 | netdev_dbg(dev, "ack error\n"); | 501 | netdev_dbg(dev, "ack error\n"); |
503 | cf->data[3] |= (CAN_ERR_PROT_LOC_ACK | | 502 | cf->data[3] = CAN_ERR_PROT_LOC_ACK; |
504 | CAN_ERR_PROT_LOC_ACK_DEL); | ||
505 | break; | 503 | break; |
506 | case LEC_BIT1_ERROR: | 504 | case LEC_BIT1_ERROR: |
507 | netdev_dbg(dev, "bit1 error\n"); | 505 | netdev_dbg(dev, "bit1 error\n"); |
@@ -513,8 +511,7 @@ static int m_can_handle_lec_err(struct net_device *dev, | |||
513 | break; | 511 | break; |
514 | case LEC_CRC_ERROR: | 512 | case LEC_CRC_ERROR: |
515 | netdev_dbg(dev, "CRC error\n"); | 513 | netdev_dbg(dev, "CRC error\n"); |
516 | cf->data[3] |= (CAN_ERR_PROT_LOC_CRC_SEQ | | 514 | cf->data[3] = CAN_ERR_PROT_LOC_CRC_SEQ; |
517 | CAN_ERR_PROT_LOC_CRC_DEL); | ||
518 | break; | 515 | break; |
519 | default: | 516 | default: |
520 | break; | 517 | break; |
diff --git a/drivers/net/can/pch_can.c b/drivers/net/can/pch_can.c index e187ca783da0..c1317889d3d8 100644 --- a/drivers/net/can/pch_can.c +++ b/drivers/net/can/pch_can.c | |||
@@ -559,8 +559,7 @@ static void pch_can_error(struct net_device *ndev, u32 status) | |||
559 | stats->rx_errors++; | 559 | stats->rx_errors++; |
560 | break; | 560 | break; |
561 | case PCH_CRC_ERR: | 561 | case PCH_CRC_ERR: |
562 | cf->data[3] |= CAN_ERR_PROT_LOC_CRC_SEQ | | 562 | cf->data[3] = CAN_ERR_PROT_LOC_CRC_SEQ; |
563 | CAN_ERR_PROT_LOC_CRC_DEL; | ||
564 | priv->can.can_stats.bus_error++; | 563 | priv->can.can_stats.bus_error++; |
565 | stats->rx_errors++; | 564 | stats->rx_errors++; |
566 | break; | 565 | break; |
diff --git a/drivers/net/can/rcar_can.c b/drivers/net/can/rcar_can.c index 7bd54191f962..bc46be39549d 100644 --- a/drivers/net/can/rcar_can.c +++ b/drivers/net/can/rcar_can.c | |||
@@ -241,17 +241,16 @@ static void rcar_can_error(struct net_device *ndev) | |||
241 | u8 ecsr; | 241 | u8 ecsr; |
242 | 242 | ||
243 | netdev_dbg(priv->ndev, "Bus error interrupt:\n"); | 243 | netdev_dbg(priv->ndev, "Bus error interrupt:\n"); |
244 | if (skb) { | 244 | if (skb) |
245 | cf->can_id |= CAN_ERR_BUSERROR | CAN_ERR_PROT; | 245 | cf->can_id |= CAN_ERR_BUSERROR | CAN_ERR_PROT; |
246 | cf->data[2] = CAN_ERR_PROT_UNSPEC; | 246 | |
247 | } | ||
248 | ecsr = readb(&priv->regs->ecsr); | 247 | ecsr = readb(&priv->regs->ecsr); |
249 | if (ecsr & RCAR_CAN_ECSR_ADEF) { | 248 | if (ecsr & RCAR_CAN_ECSR_ADEF) { |
250 | netdev_dbg(priv->ndev, "ACK Delimiter Error\n"); | 249 | netdev_dbg(priv->ndev, "ACK Delimiter Error\n"); |
251 | tx_errors++; | 250 | tx_errors++; |
252 | writeb(~RCAR_CAN_ECSR_ADEF, &priv->regs->ecsr); | 251 | writeb(~RCAR_CAN_ECSR_ADEF, &priv->regs->ecsr); |
253 | if (skb) | 252 | if (skb) |
254 | cf->data[3] |= CAN_ERR_PROT_LOC_ACK_DEL; | 253 | cf->data[3] = CAN_ERR_PROT_LOC_ACK_DEL; |
255 | } | 254 | } |
256 | if (ecsr & RCAR_CAN_ECSR_BE0F) { | 255 | if (ecsr & RCAR_CAN_ECSR_BE0F) { |
257 | netdev_dbg(priv->ndev, "Bit Error (dominant)\n"); | 256 | netdev_dbg(priv->ndev, "Bit Error (dominant)\n"); |
@@ -272,7 +271,7 @@ static void rcar_can_error(struct net_device *ndev) | |||
272 | rx_errors++; | 271 | rx_errors++; |
273 | writeb(~RCAR_CAN_ECSR_CEF, &priv->regs->ecsr); | 272 | writeb(~RCAR_CAN_ECSR_CEF, &priv->regs->ecsr); |
274 | if (skb) | 273 | if (skb) |
275 | cf->data[3] |= CAN_ERR_PROT_LOC_CRC_SEQ; | 274 | cf->data[3] = CAN_ERR_PROT_LOC_CRC_SEQ; |
276 | } | 275 | } |
277 | if (ecsr & RCAR_CAN_ECSR_AEF) { | 276 | if (ecsr & RCAR_CAN_ECSR_AEF) { |
278 | netdev_dbg(priv->ndev, "ACK Error\n"); | 277 | netdev_dbg(priv->ndev, "ACK Error\n"); |
@@ -280,7 +279,7 @@ static void rcar_can_error(struct net_device *ndev) | |||
280 | writeb(~RCAR_CAN_ECSR_AEF, &priv->regs->ecsr); | 279 | writeb(~RCAR_CAN_ECSR_AEF, &priv->regs->ecsr); |
281 | if (skb) { | 280 | if (skb) { |
282 | cf->can_id |= CAN_ERR_ACK; | 281 | cf->can_id |= CAN_ERR_ACK; |
283 | cf->data[3] |= CAN_ERR_PROT_LOC_ACK; | 282 | cf->data[3] = CAN_ERR_PROT_LOC_ACK; |
284 | } | 283 | } |
285 | } | 284 | } |
286 | if (ecsr & RCAR_CAN_ECSR_FEF) { | 285 | if (ecsr & RCAR_CAN_ECSR_FEF) { |
diff --git a/drivers/net/can/sja1000/sja1000.c b/drivers/net/can/sja1000/sja1000.c index 7b92e911a616..8dda3b703d39 100644 --- a/drivers/net/can/sja1000/sja1000.c +++ b/drivers/net/can/sja1000/sja1000.c | |||
@@ -218,6 +218,9 @@ static void sja1000_start(struct net_device *dev) | |||
218 | priv->write_reg(priv, SJA1000_RXERR, 0x0); | 218 | priv->write_reg(priv, SJA1000_RXERR, 0x0); |
219 | priv->read_reg(priv, SJA1000_ECC); | 219 | priv->read_reg(priv, SJA1000_ECC); |
220 | 220 | ||
221 | /* clear interrupt flags */ | ||
222 | priv->read_reg(priv, SJA1000_IR); | ||
223 | |||
221 | /* leave reset mode */ | 224 | /* leave reset mode */ |
222 | set_normal_mode(dev); | 225 | set_normal_mode(dev); |
223 | } | 226 | } |
@@ -446,7 +449,6 @@ static int sja1000_err(struct net_device *dev, uint8_t isrc, uint8_t status) | |||
446 | cf->data[2] |= CAN_ERR_PROT_STUFF; | 449 | cf->data[2] |= CAN_ERR_PROT_STUFF; |
447 | break; | 450 | break; |
448 | default: | 451 | default: |
449 | cf->data[2] |= CAN_ERR_PROT_UNSPEC; | ||
450 | cf->data[3] = ecc & ECC_SEG; | 452 | cf->data[3] = ecc & ECC_SEG; |
451 | break; | 453 | break; |
452 | } | 454 | } |
diff --git a/drivers/net/can/sun4i_can.c b/drivers/net/can/sun4i_can.c index d9a42c646783..68ef0a4cd821 100644 --- a/drivers/net/can/sun4i_can.c +++ b/drivers/net/can/sun4i_can.c | |||
@@ -575,7 +575,6 @@ static int sun4i_can_err(struct net_device *dev, u8 isrc, u8 status) | |||
575 | cf->data[2] |= CAN_ERR_PROT_STUFF; | 575 | cf->data[2] |= CAN_ERR_PROT_STUFF; |
576 | break; | 576 | break; |
577 | default: | 577 | default: |
578 | cf->data[2] |= CAN_ERR_PROT_UNSPEC; | ||
579 | cf->data[3] = (ecc & SUN4I_STA_ERR_SEG_CODE) | 578 | cf->data[3] = (ecc & SUN4I_STA_ERR_SEG_CODE) |
580 | >> 16; | 579 | >> 16; |
581 | break; | 580 | break; |
diff --git a/drivers/net/can/ti_hecc.c b/drivers/net/can/ti_hecc.c index cf345cbfe819..680d1ff07a55 100644 --- a/drivers/net/can/ti_hecc.c +++ b/drivers/net/can/ti_hecc.c | |||
@@ -722,7 +722,6 @@ static int ti_hecc_error(struct net_device *ndev, int int_status, | |||
722 | if (err_status & HECC_BUS_ERROR) { | 722 | if (err_status & HECC_BUS_ERROR) { |
723 | ++priv->can.can_stats.bus_error; | 723 | ++priv->can.can_stats.bus_error; |
724 | cf->can_id |= CAN_ERR_BUSERROR | CAN_ERR_PROT; | 724 | cf->can_id |= CAN_ERR_BUSERROR | CAN_ERR_PROT; |
725 | cf->data[2] |= CAN_ERR_PROT_UNSPEC; | ||
726 | if (err_status & HECC_CANES_FE) { | 725 | if (err_status & HECC_CANES_FE) { |
727 | hecc_set_bit(priv, HECC_CANES, HECC_CANES_FE); | 726 | hecc_set_bit(priv, HECC_CANES, HECC_CANES_FE); |
728 | cf->data[2] |= CAN_ERR_PROT_FORM; | 727 | cf->data[2] |= CAN_ERR_PROT_FORM; |
@@ -737,13 +736,11 @@ static int ti_hecc_error(struct net_device *ndev, int int_status, | |||
737 | } | 736 | } |
738 | if (err_status & HECC_CANES_CRCE) { | 737 | if (err_status & HECC_CANES_CRCE) { |
739 | hecc_set_bit(priv, HECC_CANES, HECC_CANES_CRCE); | 738 | hecc_set_bit(priv, HECC_CANES, HECC_CANES_CRCE); |
740 | cf->data[3] |= CAN_ERR_PROT_LOC_CRC_SEQ | | 739 | cf->data[3] = CAN_ERR_PROT_LOC_CRC_SEQ; |
741 | CAN_ERR_PROT_LOC_CRC_DEL; | ||
742 | } | 740 | } |
743 | if (err_status & HECC_CANES_ACKE) { | 741 | if (err_status & HECC_CANES_ACKE) { |
744 | hecc_set_bit(priv, HECC_CANES, HECC_CANES_ACKE); | 742 | hecc_set_bit(priv, HECC_CANES, HECC_CANES_ACKE); |
745 | cf->data[3] |= CAN_ERR_PROT_LOC_ACK | | 743 | cf->data[3] = CAN_ERR_PROT_LOC_ACK; |
746 | CAN_ERR_PROT_LOC_ACK_DEL; | ||
747 | } | 744 | } |
748 | } | 745 | } |
749 | 746 | ||
diff --git a/drivers/net/can/usb/ems_usb.c b/drivers/net/can/usb/ems_usb.c index 2d390384ef3b..fc5b75675cd8 100644 --- a/drivers/net/can/usb/ems_usb.c +++ b/drivers/net/can/usb/ems_usb.c | |||
@@ -377,7 +377,6 @@ static void ems_usb_rx_err(struct ems_usb *dev, struct ems_cpc_msg *msg) | |||
377 | cf->data[2] |= CAN_ERR_PROT_STUFF; | 377 | cf->data[2] |= CAN_ERR_PROT_STUFF; |
378 | break; | 378 | break; |
379 | default: | 379 | default: |
380 | cf->data[2] |= CAN_ERR_PROT_UNSPEC; | ||
381 | cf->data[3] = ecc & SJA1000_ECC_SEG; | 380 | cf->data[3] = ecc & SJA1000_ECC_SEG; |
382 | break; | 381 | break; |
383 | } | 382 | } |
diff --git a/drivers/net/can/usb/esd_usb2.c b/drivers/net/can/usb/esd_usb2.c index 0e5a4493ba4f..113e64fcd73b 100644 --- a/drivers/net/can/usb/esd_usb2.c +++ b/drivers/net/can/usb/esd_usb2.c | |||
@@ -282,7 +282,6 @@ static void esd_usb2_rx_event(struct esd_usb2_net_priv *priv, | |||
282 | cf->data[2] |= CAN_ERR_PROT_STUFF; | 282 | cf->data[2] |= CAN_ERR_PROT_STUFF; |
283 | break; | 283 | break; |
284 | default: | 284 | default: |
285 | cf->data[2] |= CAN_ERR_PROT_UNSPEC; | ||
286 | cf->data[3] = ecc & SJA1000_ECC_SEG; | 285 | cf->data[3] = ecc & SJA1000_ECC_SEG; |
287 | break; | 286 | break; |
288 | } | 287 | } |
diff --git a/drivers/net/can/usb/kvaser_usb.c b/drivers/net/can/usb/kvaser_usb.c index 8b17a9065b0b..022bfa13ebfa 100644 --- a/drivers/net/can/usb/kvaser_usb.c +++ b/drivers/net/can/usb/kvaser_usb.c | |||
@@ -944,10 +944,9 @@ static void kvaser_usb_rx_error(const struct kvaser_usb *dev, | |||
944 | cf->can_id |= CAN_ERR_BUSERROR | CAN_ERR_PROT; | 944 | cf->can_id |= CAN_ERR_BUSERROR | CAN_ERR_PROT; |
945 | 945 | ||
946 | if (es->leaf.error_factor & M16C_EF_ACKE) | 946 | if (es->leaf.error_factor & M16C_EF_ACKE) |
947 | cf->data[3] |= (CAN_ERR_PROT_LOC_ACK); | 947 | cf->data[3] = CAN_ERR_PROT_LOC_ACK; |
948 | if (es->leaf.error_factor & M16C_EF_CRCE) | 948 | if (es->leaf.error_factor & M16C_EF_CRCE) |
949 | cf->data[3] |= (CAN_ERR_PROT_LOC_CRC_SEQ | | 949 | cf->data[3] = CAN_ERR_PROT_LOC_CRC_SEQ; |
950 | CAN_ERR_PROT_LOC_CRC_DEL); | ||
951 | if (es->leaf.error_factor & M16C_EF_FORME) | 950 | if (es->leaf.error_factor & M16C_EF_FORME) |
952 | cf->data[2] |= CAN_ERR_PROT_FORM; | 951 | cf->data[2] |= CAN_ERR_PROT_FORM; |
953 | if (es->leaf.error_factor & M16C_EF_STFE) | 952 | if (es->leaf.error_factor & M16C_EF_STFE) |
diff --git a/drivers/net/can/usb/usb_8dev.c b/drivers/net/can/usb/usb_8dev.c index de95b1ccba3e..a731720f1d13 100644 --- a/drivers/net/can/usb/usb_8dev.c +++ b/drivers/net/can/usb/usb_8dev.c | |||
@@ -401,9 +401,7 @@ static void usb_8dev_rx_err_msg(struct usb_8dev_priv *priv, | |||
401 | tx_errors = 1; | 401 | tx_errors = 1; |
402 | break; | 402 | break; |
403 | case USB_8DEV_STATUSMSG_CRC: | 403 | case USB_8DEV_STATUSMSG_CRC: |
404 | cf->data[2] |= CAN_ERR_PROT_UNSPEC; | 404 | cf->data[3] = CAN_ERR_PROT_LOC_CRC_SEQ; |
405 | cf->data[3] |= CAN_ERR_PROT_LOC_CRC_SEQ | | ||
406 | CAN_ERR_PROT_LOC_CRC_DEL; | ||
407 | rx_errors = 1; | 405 | rx_errors = 1; |
408 | break; | 406 | break; |
409 | case USB_8DEV_STATUSMSG_BIT0: | 407 | case USB_8DEV_STATUSMSG_BIT0: |
diff --git a/drivers/net/can/xilinx_can.c b/drivers/net/can/xilinx_can.c index fc55e8e0351d..51670b322409 100644 --- a/drivers/net/can/xilinx_can.c +++ b/drivers/net/can/xilinx_can.c | |||
@@ -608,17 +608,15 @@ static void xcan_err_interrupt(struct net_device *ndev, u32 isr) | |||
608 | 608 | ||
609 | /* Check for error interrupt */ | 609 | /* Check for error interrupt */ |
610 | if (isr & XCAN_IXR_ERROR_MASK) { | 610 | if (isr & XCAN_IXR_ERROR_MASK) { |
611 | if (skb) { | 611 | if (skb) |
612 | cf->can_id |= CAN_ERR_PROT | CAN_ERR_BUSERROR; | 612 | cf->can_id |= CAN_ERR_PROT | CAN_ERR_BUSERROR; |
613 | cf->data[2] |= CAN_ERR_PROT_UNSPEC; | ||
614 | } | ||
615 | 613 | ||
616 | /* Check for Ack error interrupt */ | 614 | /* Check for Ack error interrupt */ |
617 | if (err_status & XCAN_ESR_ACKER_MASK) { | 615 | if (err_status & XCAN_ESR_ACKER_MASK) { |
618 | stats->tx_errors++; | 616 | stats->tx_errors++; |
619 | if (skb) { | 617 | if (skb) { |
620 | cf->can_id |= CAN_ERR_ACK; | 618 | cf->can_id |= CAN_ERR_ACK; |
621 | cf->data[3] |= CAN_ERR_PROT_LOC_ACK; | 619 | cf->data[3] = CAN_ERR_PROT_LOC_ACK; |
622 | } | 620 | } |
623 | } | 621 | } |
624 | 622 | ||
@@ -654,8 +652,7 @@ static void xcan_err_interrupt(struct net_device *ndev, u32 isr) | |||
654 | stats->rx_errors++; | 652 | stats->rx_errors++; |
655 | if (skb) { | 653 | if (skb) { |
656 | cf->can_id |= CAN_ERR_PROT; | 654 | cf->can_id |= CAN_ERR_PROT; |
657 | cf->data[3] = CAN_ERR_PROT_LOC_CRC_SEQ | | 655 | cf->data[3] = CAN_ERR_PROT_LOC_CRC_SEQ; |
658 | CAN_ERR_PROT_LOC_CRC_DEL; | ||
659 | } | 656 | } |
660 | } | 657 | } |
661 | priv->can.can_stats.bus_error++; | 658 | priv->can.can_stats.bus_error++; |