]>
git.enpas.org Git - elmcan.git/log
norly [Tue, 3 May 2022 01:14:53 +0000 (03:14 +0200)]
Repack struct elmcan
norly [Tue, 3 May 2022 00:54:31 +0000 (02:54 +0200)]
Clear TTY_DO_WRITE_WAKEUP bit on uart_side_failure
norly [Tue, 3 May 2022 00:53:56 +0000 (02:53 +0200)]
checkpatch.pl style fixes
norly [Tue, 3 May 2022 00:34:19 +0000 (02:34 +0200)]
Fix lockdep_assert parameters
&elm->lock instead of elm->lock
norly [Sun, 1 May 2022 21:49:01 +0000 (23:49 +0200)]
Shorten the derivation comment at the start
norly [Sun, 1 May 2022 21:19:26 +0000 (23:19 +0200)]
Update comment about N_DEVELOPMENT
N_DEVELOPMENT has been officially set to 29 in Linux v5.18-rc1.
norly [Fri, 29 Apr 2022 01:33:27 +0000 (03:33 +0200)]
Only netif_wake_queue() when ELM327 is really idle
That is, when it is receiving, as that's the default state the driver
tries its best to keep it in.
norly [Thu, 28 Apr 2022 00:19:01 +0000 (02:19 +0200)]
Statically allocate TX buffer
And also optimise struct elmcan{}'s size with pahole.
norly [Wed, 27 Apr 2022 23:41:34 +0000 (01:41 +0200)]
Start/stop TTY on netdev open/close
This allows the ldisc to reset cleanly, and even after a UART error.
It also makes for a cleaner ldisc close().
norly [Wed, 27 Apr 2022 17:36:41 +0000 (19:36 +0200)]
Name enum elm327_to_to_do_bits in lowercase for kernel code style
norly [Wed, 27 Apr 2022 17:26:58 +0000 (19:26 +0200)]
Rename hw_failure to uart_side_failure for easier understanding
norly [Tue, 26 Apr 2022 22:56:11 +0000 (00:56 +0200)]
elm327_handle_prompt(): Explain size of local buffer
Also use snprintf() instead of sprintf()/strcpy(), to clarify the
size restriction.
norly [Tue, 26 Apr 2022 22:49:30 +0000 (00:49 +0200)]
Clarify memory/string comparisons
We really can't use strncmp() here. Sorry!
norly [Tue, 26 Apr 2022 22:33:15 +0000 (00:33 +0200)]
Remove .hangup()
We were just calling .close(), which the TTY layer does for us anyway.
And it does so with the correct locking.
norly [Tue, 26 Apr 2022 22:22:03 +0000 (00:22 +0200)]
Simplify TTY sending code and locking
The great get_elm() dance was unnecessary, since the TTY layer already
synchronises *all* calls to ldisc_ops with tty_ldisc_ref() and
tty_ldisc_lock().
All that we have to ensure is that the worker does not race against
close(), which is trivial if we clear TTY_DO_WRITE_WAKEUP and then flush
the worker.
Also, the worker no longer checks whether the netdev is up - all it
needs to do is to write out the TTY buffer, and wake up the netdev when
the buffer is empty.
norly [Thu, 17 Mar 2022 20:23:10 +0000 (21:23 +0100)]
Get rid of dummy mailbox_read() for rx_offload
Use can_rx_offload_add_manual() instead of can_rx_offload_add_fifo(),
starting with Linux 5.10.
norly [Thu, 17 Mar 2022 20:14:59 +0000 (21:14 +0100)]
Add can_dropped_invalid_skb() to elmcan_netdev_start_xmit()
norly [Thu, 17 Mar 2022 20:11:11 +0000 (21:11 +0100)]
Drop superflouous elm->can.state = CAN_STATE_STOPPED;
norly [Thu, 17 Mar 2022 00:32:39 +0000 (01:32 +0100)]
Minor cleanups
norly [Wed, 16 Mar 2022 21:34:01 +0000 (22:34 +0100)]
Convert comments to lockdep_assert_held()
norly [Wed, 16 Mar 2022 21:29:58 +0000 (22:29 +0100)]
Clean up types and unused vars in struct elmcan
norly [Wed, 16 Mar 2022 21:15:01 +0000 (22:15 +0100)]
Rename ELM_ to ELM327_STATE_
norly [Wed, 16 Mar 2022 20:32:20 +0000 (21:32 +0100)]
Unify indentation in struct elmcan
norly [Wed, 16 Mar 2022 20:26:25 +0000 (21:26 +0100)]
Move MODULE_* to end of file
norly [Wed, 16 Mar 2022 20:26:06 +0000 (21:26 +0100)]
Remove braces from pr_fmt
norly [Wed, 16 Mar 2022 20:16:27 +0000 (21:16 +0100)]
Re-add author names
norly [Sat, 12 Mar 2022 20:49:49 +0000 (21:49 +0100)]
Rework elm327_hw_failure()
Using es58x as a rough template
norly [Sat, 12 Mar 2022 20:23:38 +0000 (21:23 +0100)]
Minor cleanups
norly [Sat, 12 Mar 2022 18:20:25 +0000 (19:20 +0100)]
Replace ->can_dlc with ->len
can_frame.can_dlc has been deprecated in favour of can_frame.len and as
a new driver, this needs to stick to the new convention.
Also include the ugliest backwards hack #define I've ever written to
make this compile on Linux <= 5.10 which is currently LTS.
norly [Sat, 12 Mar 2022 18:19:32 +0000 (19:19 +0100)]
elmcan_netdev_start_xmit(): Remove unnecessary skb->len check
linux/net/can/af_can.c's can_send() guarantees this already.
norly [Sat, 12 Mar 2022 18:09:11 +0000 (19:09 +0100)]
Use alloc_can_skb()
norly [Sat, 12 Mar 2022 18:08:48 +0000 (19:08 +0100)]
Rename TODO_* to ELM327_TX_DO_*
Also rename elm->can_frame to elm->can_frame_to_send
norly [Mon, 7 Mar 2022 21:39:34 +0000 (22:39 +0100)]
Mark {_len,}_memstrcmp inline
norly [Mon, 7 Mar 2022 20:30:00 +0000 (21:30 +0100)]
Change MAGIC to DUMMY, and silence init
norly [Fri, 4 Mar 2022 06:46:19 +0000 (07:46 +0100)]
Remove switch() in elm327_parse_error()
This gets rid of the last hardcoded string lengths.
norly [Fri, 4 Mar 2022 07:06:36 +0000 (08:06 +0100)]
readme.rst: Add hint on upping the interface before use
Also name 500kbit/s as the most common OBD-II speed, to save newcomers
some headache.
norly [Fri, 4 Mar 2022 06:50:53 +0000 (07:50 +0100)]
Change N_ELMCAN to N_DEVELOPMENT
N_DEVELOPMENT is slated to be defined for out-of-tree ldisc modules.
norly [Thu, 10 Feb 2022 23:42:54 +0000 (00:42 +0100)]
readme.rst: Add missing word
norly [Thu, 10 Feb 2022 23:39:00 +0000 (00:39 +0100)]
Add thanks for DKMS config
norly [Thu, 10 Feb 2022 23:24:16 +0000 (00:24 +0100)]
out-of-tree.rst: Add porting info
norly [Thu, 10 Feb 2022 23:18:08 +0000 (00:18 +0100)]
readme.rst: Split off out-of-tree documentation
This simplifies syncing changes with a future upstreamed version.
norly [Thu, 10 Feb 2022 23:23:40 +0000 (00:23 +0100)]
readme.rst: Remove module parameter documentation
Whoops, forgot to remove the accept_flaky_uart documentation.
norly [Thu, 10 Feb 2022 22:09:35 +0000 (23:09 +0100)]
Remove accept_flaky_uart module option.
Maybe we really shouldn't *too* lenient - the hexdump parsing code bails
on the first strange character anyway.
norly [Thu, 10 Feb 2022 21:54:36 +0000 (22:54 +0100)]
Introduce _memstrcmp() to beautify elm327_parse_error()
Also used in elm327_parse_frame() and elm327_parse_line()
norly [Thu, 10 Feb 2022 20:39:25 +0000 (21:39 +0100)]
Improve error handling in case of stray characters
norly [Thu, 10 Feb 2022 20:21:26 +0000 (21:21 +0100)]
Remove superfluous lines
norly [Thu, 10 Feb 2022 19:07:38 +0000 (20:07 +0100)]
Clean up comments
norly [Wed, 9 Feb 2022 23:24:34 +0000 (00:24 +0100)]
Forward port to Linux v5.17-rc3
...while keeping backwards compatibility, tested on v5.10.
norly [Sat, 5 Feb 2022 05:06:15 +0000 (06:06 +0100)]
Clean up more strings
norly [Sat, 5 Feb 2022 04:58:47 +0000 (05:58 +0100)]
Change WARN_ON into WARN_ON_ONCE
norly [Sat, 5 Feb 2022 04:51:29 +0000 (05:51 +0100)]
readme.rst: Update title
norly [Sat, 5 Feb 2022 04:35:14 +0000 (05:35 +0100)]
readme.rst: Remove empty To-Do list
norly [Sat, 5 Feb 2022 04:29:08 +0000 (05:29 +0100)]
Add BSD-3-Clause licence
norly [Sat, 5 Feb 2022 03:50:56 +0000 (04:50 +0100)]
Convert RX path to NAPI via can_rx_offload_*
norly [Sat, 15 Jan 2022 23:26:44 +0000 (00:26 +0100)]
Clarify some error texts and return values
norly [Wed, 29 Dec 2021 18:42:09 +0000 (19:42 +0100)]
readme.rst: Clarify DKMS install command
The backticks around `pwd` weren't rendered in GitHub's view of the
readme, and eventually led to a misunderstanding. See issue #6.
norly [Fri, 22 Oct 2021 16:19:17 +0000 (18:19 +0200)]
Remove TTY_LDISC_MAGIC
This is in sync with upstream
981b22b8777df7de070be1803f6d7ed4f634a43c
which removed .magic from struct tty_ldisc_ops in Linux 5.13.
norly [Mon, 17 May 2021 21:05:39 +0000 (23:05 +0200)]
Merge pull request #4 from tomaszduda23/master
Adds dkms.conf to sign kernel module
Tomasz [Mon, 17 May 2021 18:55:35 +0000 (20:55 +0200)]
Adds dkms.conf to sign kernel module
norly [Mon, 10 Jun 2019 20:27:08 +0000 (22:27 +0200)]
Add thanks
norly [Mon, 10 Jun 2019 19:46:58 +0000 (21:46 +0200)]
Style: According to linux-5.2-rc4 checkpatch.pl
norly [Mon, 10 Jun 2019 15:32:04 +0000 (17:32 +0200)]
Flush worker earlier, resolving the last to-do item.
norly [Sat, 1 Jun 2019 13:54:41 +0000 (15:54 +0200)]
Undo buffer rework for TTY RX
Actually, we fully control the RX buffer, so DMA shouldn't be a concern.
Fixes: 40ac32acdae89383ae44f32e612bf37fa0493631
norly [Sat, 1 Jun 2019 13:44:55 +0000 (15:44 +0200)]
Style: Fix one more block comment
norly [Thu, 30 May 2019 23:20:17 +0000 (01:20 +0200)]
Separate buffers from struct elm
This avoids trouble with CPU caches racing DMA accesses on ARM.
norly [Thu, 30 May 2019 21:24:48 +0000 (23:24 +0200)]
Style: Fix big comments
norly [Tue, 26 Mar 2019 23:42:57 +0000 (00:42 +0100)]
readme.rst: Clarifications
norly [Thu, 28 Feb 2019 00:51:05 +0000 (01:51 +0100)]
Document dependency on can-dev
norly [Thu, 28 Feb 2019 00:48:08 +0000 (01:48 +0100)]
Silence unused parameter in elmcan_do_set_bittiming()
norly [Mon, 25 Feb 2019 15:35:52 +0000 (16:35 +0100)]
Extract RX sanity checker into separate function
norly [Mon, 25 Feb 2019 15:25:27 +0000 (16:25 +0100)]
Comments
norly [Mon, 25 Feb 2019 15:24:11 +0000 (16:24 +0100)]
Avoid return in function bodies
norly [Mon, 25 Feb 2019 14:27:45 +0000 (15:27 +0100)]
Use can_change_mtu() instead of hand-made function
norly [Fri, 22 Feb 2019 14:22:30 +0000 (15:22 +0100)]
readme.rst: Document minimum Linux version
norly [Fri, 22 Feb 2019 14:14:17 +0000 (15:14 +0100)]
readme.rst: Add note on termination, minor fixes
norly [Tue, 19 Feb 2019 22:47:35 +0000 (23:47 +0100)]
Comments and minor style
norly [Tue, 19 Feb 2019 22:00:11 +0000 (23:00 +0100)]
Turn BUG_ON() into WARN_ON()
norly [Tue, 19 Feb 2019 21:56:48 +0000 (22:56 +0100)]
Style: Move elm327_is_ready_char() further down to where it is used
norly [Tue, 19 Feb 2019 21:55:18 +0000 (22:55 +0100)]
Simplify init script sending
My problems with initializing the chip should now be solved by the
'accept_flaky_uart' module parameter.
norly [Tue, 19 Feb 2019 21:10:16 +0000 (22:10 +0100)]
ioctl(SIOCGIFNAME): Copy at most IFNAMSIZ bytes, but less if possible
Thus, we don't leak any trailing bytes that may be in the name buffer.
norly [Tue, 19 Feb 2019 19:19:53 +0000 (20:19 +0100)]
Always copy IFNAMSIZ bytes on ioctl(SIOCGIFNAME)
Just in case dev->name is ever not NUL terminated
norly [Tue, 19 Feb 2019 18:59:11 +0000 (19:59 +0100)]
Remove stray spin_lock_bh()
norly [Tue, 19 Feb 2019 14:18:26 +0000 (15:18 +0100)]
Style fixes
norly [Tue, 19 Feb 2019 01:20:42 +0000 (02:20 +0100)]
Synchronize email addresses
norly [Mon, 18 Feb 2019 23:49:06 +0000 (00:49 +0100)]
Fix up stray comments now that we have elm327_is_ready_char()
norly [Mon, 18 Feb 2019 23:24:21 +0000 (00:24 +0100)]
Sanity check TTY input and bail on problems
Also, introduce module parameter 'accept_flaky_uart'.
If your adapter or its connection is unreliable, set this option to
true to try and make the best of a bad situation, but undefined
behavior is prone to occur.
norly [Mon, 18 Feb 2019 23:23:12 +0000 (00:23 +0100)]
Ignore tty RX after HW failure, locking fix
norly [Mon, 18 Feb 2019 20:38:04 +0000 (21:38 +0100)]
readme.rst: Add rationale behind the chosen configuration
Plus minor fixes.
norly [Mon, 18 Feb 2019 13:48:44 +0000 (14:48 +0100)]
README.txt: Add limitations for 'v1.5' clones
norly [Mon, 18 Feb 2019 13:30:29 +0000 (14:30 +0100)]
README.rst: We actually use can_bus_off() now
norly [Mon, 18 Feb 2019 13:27:21 +0000 (14:27 +0100)]
README.rst: Forgot to bump the ldisc number
norly [Mon, 18 Feb 2019 13:23:33 +0000 (14:23 +0100)]
Work around hardware bug when waiting for '>' prompt
Sometimes the ELM327 sets 0x80 and/or 0x40 when sending '>' to indicate
that it is ready to receive the next command.
Masking these two bits out seems to take care of most or all hangs
during initialization.
norly [Sun, 17 Feb 2019 23:34:10 +0000 (00:34 +0100)]
Shut down ELM327's 'protocol' before reconfiguring CAN
According to ELM327's manual, AT PC should be sent before issuing AT PB.
norly [Sun, 17 Feb 2019 23:24:02 +0000 (00:24 +0100)]
Drop fake bittimings in favor of bitrate table
The fake bittiming table produces wrong results in Linux 4.19's bitrate
based parameter calculation.
SocketCAN support for fixed bitrates was introduced in
431af779256c in
Jan 2017, and as of Linux 4.18 the only driver using it is mcba_usb.
Bitrates are also fixed in ELM327, and none of the other parameters can
be tuned, so using this API makes sense here as well.
norly [Thu, 14 Feb 2019 18:29:31 +0000 (19:29 +0100)]
Improve readability of elm327_handle_prompt()
norly [Thu, 14 Feb 2019 18:22:20 +0000 (19:22 +0100)]
Null stack variables before use
norly [Sun, 17 Feb 2019 23:45:42 +0000 (00:45 +0100)]
Don't try to send garbage after each init script entry
Previously, we'd try to send the local txbuf even though it had not been
written to. Thus strlen() would overrun the buffer, which recent Linux
versions catch in a BUG_ON().
norly [Thu, 31 Jan 2019 00:53:14 +0000 (01:53 +0100)]
Use more netdev_err() instead of pr_err()
...and remove a stray comment
norly [Thu, 31 Jan 2019 00:49:33 +0000 (01:49 +0100)]
Return cleanly in functions calling elm327_hw_failure()
norly [Thu, 31 Jan 2019 00:08:15 +0000 (01:08 +0100)]
Don't reset on HW fault, but take the interface down.
There is currently no interface to try again, other than detaching and
re-attaching the line discipline. It wouldn't make much sense either,
unless we've run into an unexpected state in the ELM327's firmware.