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@xxxxxxx> 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