[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20190510104639.15170-3-qiangqing.zhang@nxp.com>
Date: Fri, 10 May 2019 10:49:58 +0000
From: Joakim Zhang <qiangqing.zhang@....com>
To: "mkl@...gutronix.de" <mkl@...gutronix.de>,
"linux-can@...r.kernel.org" <linux-can@...r.kernel.org>
CC: dl-linux-imx <linux-imx@....com>,
"wg@...ndegger.com" <wg@...ndegger.com>,
"netdev@...r.kernel.org" <netdev@...r.kernel.org>,
Stefan-gabriel Mirea <stefan-gabriel.mirea@....com>,
Joakim Zhang <qiangqing.zhang@....com>
Subject: [PATCH V3 2/7] can: flexcan: use struct canfd_frame for normal CAN
frame
This patch prepares for CAN FD mode, using struct canfd_frame can both
for normal format frame and fd format frame.
Signed-off-by: Joakim Zhang <qiangqing.zhang@....com>
ChangeLog:
----------
V2->V3:
*New patch, split from other patch
---
drivers/net/can/flexcan.c | 14 +++++++-------
drivers/net/can/rx-offload.c | 4 ++--
2 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/drivers/net/can/flexcan.c b/drivers/net/can/flexcan.c
index f742077e8f93..22f5c28ff99f 100644
--- a/drivers/net/can/flexcan.c
+++ b/drivers/net/can/flexcan.c
@@ -609,10 +609,10 @@ static int flexcan_get_berr_counter(const struct net_device *dev,
static netdev_tx_t flexcan_start_xmit(struct sk_buff *skb, struct net_device *dev)
{
const struct flexcan_priv *priv = netdev_priv(dev);
- struct can_frame *cf = (struct can_frame *)skb->data;
+ struct canfd_frame *cf = (struct canfd_frame *)skb->data;
u32 can_id;
u32 data;
- u32 ctrl = FLEXCAN_MB_CODE_TX_DATA | (cf->can_dlc << 16);
+ u32 ctrl = FLEXCAN_MB_CODE_TX_DATA | (cf->len << 16);
int i;
if (can_dropped_invalid_skb(dev, skb))
@@ -630,7 +630,7 @@ static netdev_tx_t flexcan_start_xmit(struct sk_buff *skb, struct net_device *de
if (cf->can_id & CAN_RTR_FLAG)
ctrl |= FLEXCAN_MB_CNT_RTR;
- for (i = 0; i < cf->can_dlc; i += sizeof(u32)) {
+ for (i = 0; i < cf->len; i += sizeof(u32)) {
data = be32_to_cpup((__be32 *)&cf->data[i]);
priv->write(data, &priv->tx_mb->data[i / sizeof(u32)]);
}
@@ -797,7 +797,7 @@ static unsigned int flexcan_mailbox_read(struct can_rx_offload *offload, bool dr
struct flexcan_regs __iomem *regs = priv->regs;
struct flexcan_mb __iomem *mb;
u32 reg_ctrl, reg_id, reg_iflag1;
- struct can_frame *cf;
+ struct canfd_frame *cf;
int i;
mb = flexcan_get_mb(priv, n);
@@ -829,7 +829,7 @@ static unsigned int flexcan_mailbox_read(struct can_rx_offload *offload, bool dr
}
if (!drop)
- *skb = alloc_can_skb(offload->dev, &cf);
+ *skb = alloc_can_skb(offload->dev, (struct can_frame **)&cf);
if (*skb) {
/* increase timstamp to full 32 bit */
@@ -843,9 +843,9 @@ static unsigned int flexcan_mailbox_read(struct can_rx_offload *offload, bool dr
if (reg_ctrl & FLEXCAN_MB_CNT_RTR)
cf->can_id |= CAN_RTR_FLAG;
- cf->can_dlc = get_can_dlc((reg_ctrl >> 16) & 0xf);
+ cf->len = get_can_dlc((reg_ctrl >> 16) & 0x0F);
- for (i = 0; i < cf->can_dlc; i += sizeof(u32)) {
+ for (i = 0; i < cf->len; i += sizeof(u32)) {
__be32 data = cpu_to_be32(priv->read(&mb->data[i / sizeof(u32)]));
*(__be32 *)(cf->data + i) = data;
}
diff --git a/drivers/net/can/rx-offload.c b/drivers/net/can/rx-offload.c
index 632919484ff7..fe64dfddc5ba 100644
--- a/drivers/net/can/rx-offload.c
+++ b/drivers/net/can/rx-offload.c
@@ -55,11 +55,11 @@ static int can_rx_offload_napi_poll(struct napi_struct *napi, int quota)
while ((work_done < quota) &&
(skb = skb_dequeue(&offload->skb_queue))) {
- struct can_frame *cf = (struct can_frame *)skb->data;
+ struct canfd_frame *cf = (struct canfd_frame *)skb->data;
work_done++;
stats->rx_packets++;
- stats->rx_bytes += cf->can_dlc;
+ stats->rx_bytes += cf->len;
netif_receive_skb(skb);
}
--
2.17.1
Powered by blists - more mailing lists