mirror of https://gitee.com/openkylin/linux.git
linux-can-fixes-for-4.15-20171201
-----BEGIN PGP SIGNATURE----- iQFHBAABCgAxFiEE4bay/IylYqM/npjQHv7KIOw4HPYFAlohX1sTHG1rbEBwZW5n dXRyb25peC5kZQAKCRAe/sog7Dgc9sjPCACWLFU4N0upk2+QutPK5+VP0hKlkkpj FRM3JVUt+PxsLpnMj5C99f55poBqT8njadzLNXX1iZG3kXjt+LE8xF5VPc9jifYa wKHMNFedaDgyw4bEUTcDrtcDhP16gcxwDC7Wfwxi1pSoISs1S/KT3e82Ih3es92F mw+LxdgMHuOzN5fByIiwGUC3qdiNQLAkzAbbzEX6L/A7QSxraecMREUodJNrzDKo fD13xyCiq8alEIYfDFjLA/8K9645O4RTpZfIF0HyNtXTfaG4vl+/OswXLuY/xmJq X7pmUBppKwV3vt0nIGZUNy/qoaf8MbIkh6l2jzou94Ys3xNUfSErkwKQ =WgyM -----END PGP SIGNATURE----- Merge tag 'linux-can-fixes-for-4.15-20171201' of git://git.kernel.org/pub/scm/linux/kernel/git/mkl/linux-can Marc Kleine-Budde says: ==================== pull-request: can 2017-12-01 this is a pull for net consisting of nine patches. The first three patches are by Jimmy Assarsson for the kvaser_usb driver and add the missing free()s in some error path, a signed/unsigned comparison and ratelimit the error messages in case of incomplete messages. Oliver Stäbler's patch for the ti_hecc driver fix the napi poll function's return value. The return values of the probe function of the peak_canfd and peak_pci PCI drivers are fixed by Stephane Grosjean's patch. Two patches by me for the flexcan driver update the bugs/features/quirks overview table and fix the error state transition for the VF610 SoC. The two patches by Martin Kelly for the mcba_usb driver fix a typo and a device disconnect bug. ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
commit
ed75e1ac1c
|
@ -184,12 +184,12 @@
|
|||
* Below is some version info we got:
|
||||
* SOC Version IP-Version Glitch- [TR]WRN_INT IRQ Err Memory err RTR re-
|
||||
* Filter? connected? Passive detection ception in MB
|
||||
* MX25 FlexCAN2 03.00.00.00 no no ? no no
|
||||
* MX25 FlexCAN2 03.00.00.00 no no no no no
|
||||
* MX28 FlexCAN2 03.00.04.00 yes yes no no no
|
||||
* MX35 FlexCAN2 03.00.00.00 no no ? no no
|
||||
* MX35 FlexCAN2 03.00.00.00 no no no no no
|
||||
* MX53 FlexCAN2 03.00.00.00 yes no no no no
|
||||
* MX6s FlexCAN3 10.00.12.00 yes yes no no yes
|
||||
* VF610 FlexCAN3 ? no yes ? yes yes?
|
||||
* VF610 FlexCAN3 ? no yes no yes yes?
|
||||
*
|
||||
* Some SOCs do not have the RX_WARN & TX_WARN interrupt line connected.
|
||||
*/
|
||||
|
@ -297,7 +297,8 @@ static const struct flexcan_devtype_data fsl_imx6q_devtype_data = {
|
|||
|
||||
static const struct flexcan_devtype_data fsl_vf610_devtype_data = {
|
||||
.quirks = FLEXCAN_QUIRK_DISABLE_RXFG | FLEXCAN_QUIRK_ENABLE_EACEN_RRS |
|
||||
FLEXCAN_QUIRK_DISABLE_MECR | FLEXCAN_QUIRK_USE_OFF_TIMESTAMP,
|
||||
FLEXCAN_QUIRK_DISABLE_MECR | FLEXCAN_QUIRK_USE_OFF_TIMESTAMP |
|
||||
FLEXCAN_QUIRK_BROKEN_PERR_STATE,
|
||||
};
|
||||
|
||||
static const struct can_bittiming_const flexcan_bittiming_const = {
|
||||
|
|
|
@ -825,7 +825,10 @@ static int peak_pciefd_probe(struct pci_dev *pdev,
|
|||
err_disable_pci:
|
||||
pci_disable_device(pdev);
|
||||
|
||||
return err;
|
||||
/* pci_xxx_config_word() return positive PCIBIOS_xxx error codes while
|
||||
* the probe() function must return a negative errno in case of failure
|
||||
* (err is unchanged if negative) */
|
||||
return pcibios_err_to_errno(err);
|
||||
}
|
||||
|
||||
/* free the board structure object, as well as its resources: */
|
||||
|
|
|
@ -717,7 +717,10 @@ static int peak_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
|
|||
failure_disable_pci:
|
||||
pci_disable_device(pdev);
|
||||
|
||||
return err;
|
||||
/* pci_xxx_config_word() return positive PCIBIOS_xxx error codes while
|
||||
* the probe() function must return a negative errno in case of failure
|
||||
* (err is unchanged if negative) */
|
||||
return pcibios_err_to_errno(err);
|
||||
}
|
||||
|
||||
static void peak_pci_remove(struct pci_dev *pdev)
|
||||
|
|
|
@ -637,6 +637,9 @@ static int ti_hecc_rx_poll(struct napi_struct *napi, int quota)
|
|||
mbx_mask = hecc_read(priv, HECC_CANMIM);
|
||||
mbx_mask |= HECC_TX_MBOX_MASK;
|
||||
hecc_write(priv, HECC_CANMIM, mbx_mask);
|
||||
} else {
|
||||
/* repoll is done only if whole budget is used */
|
||||
num_pkts = quota;
|
||||
}
|
||||
|
||||
return num_pkts;
|
||||
|
|
|
@ -609,8 +609,8 @@ static int kvaser_usb_wait_msg(const struct kvaser_usb *dev, u8 id,
|
|||
}
|
||||
|
||||
if (pos + tmp->len > actual_len) {
|
||||
dev_err(dev->udev->dev.parent,
|
||||
"Format error\n");
|
||||
dev_err_ratelimited(dev->udev->dev.parent,
|
||||
"Format error\n");
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -813,6 +813,7 @@ static int kvaser_usb_simple_msg_async(struct kvaser_usb_net_priv *priv,
|
|||
if (err) {
|
||||
netdev_err(netdev, "Error transmitting URB\n");
|
||||
usb_unanchor_urb(urb);
|
||||
kfree(buf);
|
||||
usb_free_urb(urb);
|
||||
return err;
|
||||
}
|
||||
|
@ -1333,7 +1334,7 @@ static void kvaser_usb_read_bulk_callback(struct urb *urb)
|
|||
goto resubmit_urb;
|
||||
}
|
||||
|
||||
while (pos <= urb->actual_length - MSG_HEADER_LEN) {
|
||||
while (pos <= (int)(urb->actual_length - MSG_HEADER_LEN)) {
|
||||
msg = urb->transfer_buffer + pos;
|
||||
|
||||
/* The Kvaser firmware can only read and write messages that
|
||||
|
@ -1352,7 +1353,8 @@ static void kvaser_usb_read_bulk_callback(struct urb *urb)
|
|||
}
|
||||
|
||||
if (pos + msg->len > urb->actual_length) {
|
||||
dev_err(dev->udev->dev.parent, "Format error\n");
|
||||
dev_err_ratelimited(dev->udev->dev.parent,
|
||||
"Format error\n");
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -1768,6 +1770,7 @@ static netdev_tx_t kvaser_usb_start_xmit(struct sk_buff *skb,
|
|||
spin_unlock_irqrestore(&priv->tx_contexts_lock, flags);
|
||||
|
||||
usb_unanchor_urb(urb);
|
||||
kfree(buf);
|
||||
|
||||
stats->tx_dropped++;
|
||||
|
||||
|
|
|
@ -592,6 +592,7 @@ static void mcba_usb_read_bulk_callback(struct urb *urb)
|
|||
break;
|
||||
|
||||
case -ENOENT:
|
||||
case -EPIPE:
|
||||
case -ESHUTDOWN:
|
||||
return;
|
||||
|
||||
|
@ -862,7 +863,7 @@ static int mcba_usb_probe(struct usb_interface *intf,
|
|||
goto cleanup_unregister_candev;
|
||||
}
|
||||
|
||||
dev_info(&intf->dev, "Microchip CAN BUS analizer connected\n");
|
||||
dev_info(&intf->dev, "Microchip CAN BUS Analyzer connected\n");
|
||||
|
||||
return 0;
|
||||
|
||||
|
|
Loading…
Reference in New Issue