projects
/
elmcan.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
eb2866d
)
Rename hw_failure to uart_side_failure for easier understanding
author
norly
<ny-git@enpas.org>
Wed, 27 Apr 2022 17:26:58 +0000
(19:26 +0200)
committer
norly
<ny-git@enpas.org>
Thu, 28 Apr 2022 00:23:34 +0000
(
02:23
+0200)
module/elmcan.c
patch
|
blob
|
history
diff --git
a/module/elmcan.c
b/module/elmcan.c
index 9c19d76e141606ad8e52c4e56843d973f2fd9e05..6a7b95127bb828fcb861e8b0bd45ac6db742958d 100644
(file)
--- a/
module/elmcan.c
+++ b/
module/elmcan.c
@@
-96,10
+96,12
@@
struct elmcan {
/* Per-channel lock */
spinlock_t lock;
/* Per-channel lock */
spinlock_t lock;
- /* Stop the channel on hardware failure.
+ /* Stop the channel on UART side hardware failure, e.g. stray
+ * characters or neverending lines. This may be caused by bad
+ * UART wiring, a bad ELM327, a bad UART bridge...
* Once this is true, nothing will be sent to the TTY.
*/
* Once this is true, nothing will be sent to the TTY.
*/
- bool
hw
_failure;
+ bool
uart_side
_failure;
/* TTY TX helpers */
struct work_struct tx_work; /* Flushes TTY TX buffer */
/* TTY TX helpers */
struct work_struct tx_work; /* Flushes TTY TX buffer */
@@
-133,7
+135,7
@@
struct elmcan {
unsigned long cmds_todo;
};
unsigned long cmds_todo;
};
-static inline void elm327_
hw
_failure(struct elmcan *elm);
+static inline void elm327_
uart_side
_failure(struct elmcan *elm);
static void elm327_send(struct elmcan *elm, const void *buf, size_t len)
{
static void elm327_send(struct elmcan *elm, const void *buf, size_t len)
{
@@
-141,7
+143,7
@@
static void elm327_send(struct elmcan *elm, const void *buf, size_t len)
lockdep_assert_held(elm->lock);
lockdep_assert_held(elm->lock);
- if (elm->
hw
_failure)
+ if (elm->
uart_side
_failure)
return;
memcpy(elm->txbuf, buf, len);
return;
memcpy(elm->txbuf, buf, len);
@@
-151,7
+153,7
@@
static void elm327_send(struct elmcan *elm, const void *buf, size_t len)
netdev_err(elm->dev,
"Failed to write to tty %s.\n",
elm->tty->name);
netdev_err(elm->dev,
"Failed to write to tty %s.\n",
elm->tty->name);
- elm327_
hw
_failure(elm);
+ elm327_
uart_side
_failure(elm);
return;
}
return;
}
@@
-294,14
+296,14
@@
static void elm327_feed_frame_to_netdev(struct elmcan *elm,
}
/* Called when we're out of ideas and just want it all to end. */
}
/* Called when we're out of ideas and just want it all to end. */
-static inline void elm327_
hw
_failure(struct elmcan *elm)
+static inline void elm327_
uart_side
_failure(struct elmcan *elm)
{
struct can_frame *frame;
struct sk_buff *skb;
lockdep_assert_held(elm->lock);
{
struct can_frame *frame;
struct sk_buff *skb;
lockdep_assert_held(elm->lock);
- elm->
hw
_failure = true;
+ elm->
uart_side
_failure = true;
elm->can.can_stats.bus_off++;
netif_stop_queue(elm->dev);
elm->can.can_stats.bus_off++;
netif_stop_queue(elm->dev);
@@
-719,7
+721,7
@@
static void elm327_parse_rxbuf(struct elmcan *elm)
*/
netdev_err(elm->dev,
"RX buffer overflow. Faulty ELM327 or UART?\n");
*/
netdev_err(elm->dev,
"RX buffer overflow. Faulty ELM327 or UART?\n");
- elm327_
hw
_failure(elm);
+ elm327_
uart_side
_failure(elm);
break;
} else if (len == elm->rxfill) {
if (elm327_is_ready_char(elm->rxbuf[elm->rxfill - 1])) {
break;
} else if (len == elm->rxfill) {
if (elm327_is_ready_char(elm->rxbuf[elm->rxfill - 1])) {
@@
-769,7
+771,7
@@
static int elmcan_netdev_open(struct net_device *dev)
int err;
spin_lock_bh(&elm->lock);
int err;
spin_lock_bh(&elm->lock);
- if (elm->
hw
_failure) {
+ if (elm->
uart_side
_failure) {
netdev_err(elm->dev, "Refusing to open interface after a hardware fault has been detected.\n");
spin_unlock_bh(&elm->lock);
return -EIO;
netdev_err(elm->dev, "Refusing to open interface after a hardware fault has been detected.\n");
spin_unlock_bh(&elm->lock);
return -EIO;
@@
-860,10
+862,10
@@
static netdev_tx_t elmcan_netdev_start_xmit(struct sk_buff *skb,
/* We shouldn't get here after a hardware fault:
* can_bus_off() calls netif_carrier_off()
*/
/* We shouldn't get here after a hardware fault:
* can_bus_off() calls netif_carrier_off()
*/
- WARN_ON_ONCE(elm->
hw
_failure);
+ WARN_ON_ONCE(elm->
uart_side
_failure);
if (!elm->tty ||
if (!elm->tty ||
- elm->
hw
_failure ||
+ elm->
uart_side
_failure ||
elm->can.ctrlmode & CAN_CTRLMODE_LISTENONLY) {
spin_unlock(&elm->lock);
goto out;
elm->can.ctrlmode & CAN_CTRLMODE_LISTENONLY) {
spin_unlock(&elm->lock);
goto out;
@@
-923,14
+925,14
@@
static void elmcan_ldisc_rx(struct tty_struct *tty,
spin_lock_bh(&elm->lock);
spin_lock_bh(&elm->lock);
- if (elm->
hw
_failure)
+ if (elm->
uart_side
_failure)
goto out;
while (count-- && elm->rxfill < ELM327_SIZE_RXBUF) {
if (fp && *fp++) {
netdev_err(elm->dev, "Error in received character stream. Check your wiring.");
goto out;
while (count-- && elm->rxfill < ELM327_SIZE_RXBUF) {
if (fp && *fp++) {
netdev_err(elm->dev, "Error in received character stream. Check your wiring.");
- elm327_
hw
_failure(elm);
+ elm327_
uart_side
_failure(elm);
goto out;
}
goto out;
}
@@
-948,7
+950,7
@@
static void elmcan_ldisc_rx(struct tty_struct *tty,
netdev_err(elm->dev,
"Received illegal character %02x.\n",
*cp);
netdev_err(elm->dev,
"Received illegal character %02x.\n",
*cp);
- elm327_
hw
_failure(elm);
+ elm327_
uart_side
_failure(elm);
goto out;
}
goto out;
}
@@
-962,7
+964,7
@@
static void elmcan_ldisc_rx(struct tty_struct *tty,
if (count >= 0) {
netdev_err(elm->dev, "Receive buffer overflowed. Bad chip or wiring?");
if (count >= 0) {
netdev_err(elm->dev, "Receive buffer overflowed. Bad chip or wiring?");
- elm327_
hw
_failure(elm);
+ elm327_
uart_side
_failure(elm);
goto out;
}
goto out;
}
@@
-981,7
+983,7
@@
static void elmcan_ldisc_tx_worker(struct work_struct *work)
struct elmcan *elm = container_of(work, struct elmcan, tx_work);
ssize_t written;
struct elmcan *elm = container_of(work, struct elmcan, tx_work);
ssize_t written;
- if (elm->
hw
_failure)
+ if (elm->
uart_side
_failure)
return;
spin_lock_bh(&elm->lock);
return;
spin_lock_bh(&elm->lock);
@@
-992,7
+994,7
@@
static void elmcan_ldisc_tx_worker(struct work_struct *work)
netdev_err(elm->dev,
"Failed to write to tty %s.\n",
elm->tty->name);
netdev_err(elm->dev,
"Failed to write to tty %s.\n",
elm->tty->name);
- elm327_
hw
_failure(elm);
+ elm327_
uart_side
_failure(elm);
spin_unlock_bh(&elm->lock);
return;
} else {
spin_unlock_bh(&elm->lock);
return;
} else {