#include <linux/init.h>
#include <linux/module.h>
-#include <linux/moduleparam.h>
-#include <linux/atomic.h>
#include <linux/bitops.h>
#include <linux/ctype.h>
-#include <linux/delay.h>
#include <linux/errno.h>
-#include <linux/if_ether.h>
#include <linux/kernel.h>
#include <linux/list.h>
#include <linux/lockdep.h>
#include <linux/can.h>
#include <linux/can/dev.h>
#include <linux/can/error.h>
-#include <linux/can/led.h>
#include <linux/can/rx-offload.h>
/* Line discipline ID number.
#define ELM327_NAPI_WEIGHT 4
-#define ELM327_SIZE_RXBUF 224
+#define ELM327_SIZE_RXBUF 992
#define ELM327_SIZE_TXBUF 32
#define ELM327_CAN_CONFIG_SEND_SFF 0x8000
elm->drop_next_line = 0;
/* We can only set the bitrate as a fraction of 500000.
- * The bit timing constants in can327_bittiming_const will
+ * The bitrates listed in can327_bitrate_const will
* limit the user to the right values.
*/
elm->can_bitrate_divisor = 500000 / elm->can.bittiming.bitrate;
/* The line is likely garbled anyway, so bail.
* The main code will restart listening.
*/
+ kfree_skb(skb);
return -ENODATA;
}
/* This is not a well-formatted data line.
* Assume it's an error message.
*/
+ kfree_skb(skb);
return -ENODATA;
}
/* The line is too short to be a valid frame hex dump.
* Something interrupted the hex dump or it is invalid.
*/
+ kfree_skb(skb);
return -ENODATA;
}
* However, this will correctly drop the state machine back into
* command mode.
*/
+ kfree_skb(skb);
return -ENODATA;
}
#if LINUX_VERSION_CODE < KERNEL_VERSION(5,10,0)
/* Dummy needed to use can_rx_offload */
+#if LINUX_VERSION_CODE < KERNEL_VERSION(5,5,0)
+static unsigned int *can327_mailbox_read(struct can_rx_offload *offload,
+ struct can_frame *cf,
+ u32 *timestamp, unsigned int n)
+{
+ WARN_ON_ONCE(1); /* This function is a dummy, so don't call it! */
+
+ return -ENOBUFS;
+}
+#else /* Since 4e9c9484b085 (included in v5.5) */
static struct sk_buff *can327_mailbox_read(struct can_rx_offload *offload,
unsigned int n, u32 *timestamp,
bool drop)
return ERR_PTR(-ENOBUFS);
}
#endif
+#endif
static int can327_netdev_open(struct net_device *dev)
{
can_rx_offload_enable(&elm->offload);
- can_led_event(dev, CAN_LED_EVENT_OPEN);
elm->can.state = CAN_STATE_ERROR_ACTIVE;
netif_start_queue(dev);
elm->can.state = CAN_STATE_STOPPED;
can_rx_offload_del(&elm->offload);
close_candev(dev);
- can_led_event(dev, CAN_LED_EVENT_STOP);
return 0;
}
dev->stats.tx_packets++;
dev->stats.tx_bytes += frame->len;
- can_led_event(dev, CAN_LED_EVENT_TX);
-
out:
kfree_skb(skb);
return NETDEV_TX_OK;
}
if (count >= 0) {
- netdev_err(elm->dev, "Receive buffer overflowed. Bad chip or wiring?");
+ netdev_err(elm->dev, "Receive buffer overflowed. Bad chip or wiring? count = %i", count);
elm327_uart_side_failure(elm);
* or 7/8 of that. Divisors are 1 to 64.
* Currently we don't implement support for 7/8 rates.
*/
-static const u32 can327_bitrate_const[64] = {
+static const u32 can327_bitrate_const[] = {
7812, 7936, 8064, 8196, 8333, 8474, 8620, 8771,
8928, 9090, 9259, 9433, 9615, 9803, 10000, 10204,
10416, 10638, 10869, 11111, 11363, 11627, 11904, 12195,
elm->tty = tty;
tty->disc_data = elm;
- devm_can_led_init(elm->dev);
-
/* Let 'er rip */
err = register_candev(elm->dev);
if (err) {