can: etas_es58x: rewrite the message cast in es58{1,_fd}_tx_can_msg to increase reada...
authorVincent Mailhol <mailhol.vincent@wanadoo.fr>
Mon, 28 Jun 2021 15:54:20 +0000 (00:54 +0900)
committerMarc Kleine-Budde <mkl@pengutronix.de>
Sun, 25 Jul 2021 09:36:28 +0000 (11:36 +0200)
The es581_tx_can_msg() does below cast:
| tx_can_msg = (struct es581_4_tx_can_msg *)
|     &es581_4_urb_cmd->bulk_tx_can_msg.tx_can_msg_buf[msg_len - 1];

The -1 offset is to skip the first member of struct
es581_4_tx_can_msg. However, es581_4_urb_cmd already has a raw_msg
field which can be used instead without the use of an offset
calculation.

The function es58x_fd_tx_can_msg() is also modified to mirror
es581_tx_can_msg().

Link: https://lore.kernel.org/r/20210628155420.1176217-7-mailhol.vincent@wanadoo.fr
Signed-off-by: Vincent Mailhol <mailhol.vincent@wanadoo.fr>
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
drivers/net/can/usb/etas_es58x/es581_4.c
drivers/net/can/usb/etas_es58x/es58x_fd.c

index 88dbfe41ba8582d569956d509273b023213a959d..14e360c9f2c9a7f570407c73d699775e60efc26a 100644 (file)
@@ -371,8 +371,7 @@ static int es581_4_tx_can_msg(struct es58x_priv *priv,
                return ret;
 
        /* Fill message contents. */
-       tx_can_msg = (struct es581_4_tx_can_msg *)
-           &es581_4_urb_cmd->bulk_tx_can_msg.tx_can_msg_buf[msg_len - 1];
+       tx_can_msg = (typeof(tx_can_msg))&es581_4_urb_cmd->raw_msg[msg_len];
        put_unaligned_le32(es58x_get_raw_can_id(cf), &tx_can_msg->can_id);
        put_unaligned_le32(priv->tx_head, &tx_can_msg->packet_idx);
        put_unaligned_le16((u16)es58x_get_flags(skb), &tx_can_msg->flags);
index e8a77d136165987992db824b6ace9e9b6cefbe98..af042aa55f59e25ce82f7543587f631277fdcc2b 100644 (file)
@@ -357,8 +357,7 @@ static int es58x_fd_tx_can_msg(struct es58x_priv *priv,
                return ret;
 
        /* Fill message contents. */
-       tx_can_msg = (struct es58x_fd_tx_can_msg *)
-           &es58x_fd_urb_cmd->tx_can_msg_buf[msg_len];
+       tx_can_msg = (typeof(tx_can_msg))&es58x_fd_urb_cmd->raw_msg[msg_len];
        tx_can_msg->packet_idx = (u8)priv->tx_head;
        put_unaligned_le32(es58x_get_raw_can_id(cf), &tx_can_msg->can_id);
        tx_can_msg->flags = (u8)es58x_get_flags(skb);