Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 289888
b: refs/heads/master
c: 9a12349
h: refs/heads/master
v: v3
  • Loading branch information
Reuben Dowle authored and Marc Kleine-Budde committed Feb 3, 2012
1 parent d9f4608 commit d34f432
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 11 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: cf5046b309b3a05c444a8edba6b44108510b7d7d
refs/heads/master: 9a12349663061d25b49e6542d005fa7193a2cb44
17 changes: 7 additions & 10 deletions trunk/drivers/net/can/flexcan.c
Original file line number Diff line number Diff line change
Expand Up @@ -269,7 +269,6 @@ static int flexcan_get_berr_counter(const struct net_device *dev,
static int flexcan_start_xmit(struct sk_buff *skb, struct net_device *dev)
{
const struct flexcan_priv *priv = netdev_priv(dev);
struct net_device_stats *stats = &dev->stats;
struct flexcan_regs __iomem *regs = priv->base;
struct can_frame *cf = (struct can_frame *)skb->data;
u32 can_id;
Expand Down Expand Up @@ -299,14 +298,11 @@ static int flexcan_start_xmit(struct sk_buff *skb, struct net_device *dev)
flexcan_write(data, &regs->cantxfg[FLEXCAN_TX_BUF_ID].data[1]);
}

can_put_echo_skb(skb, dev, 0);

flexcan_write(can_id, &regs->cantxfg[FLEXCAN_TX_BUF_ID].can_id);
flexcan_write(ctrl, &regs->cantxfg[FLEXCAN_TX_BUF_ID].can_ctrl);

kfree_skb(skb);

/* tx_packets is incremented in flexcan_irq */
stats->tx_bytes += cf->can_dlc;

return NETDEV_TX_OK;
}

Expand Down Expand Up @@ -609,7 +605,7 @@ static irqreturn_t flexcan_irq(int irq, void *dev_id)

/* transmission complete interrupt */
if (reg_iflag1 & (1 << FLEXCAN_TX_BUF_ID)) {
/* tx_bytes is incremented in flexcan_start_xmit */
stats->tx_bytes += can_get_echo_skb(dev, 0);
stats->tx_packets++;
flexcan_write((1 << FLEXCAN_TX_BUF_ID), &regs->iflag1);
netif_wake_queue(dev);
Expand Down Expand Up @@ -697,12 +693,13 @@ static int flexcan_chip_start(struct net_device *dev)
* only supervisor access
* enable warning int
* choose format C
* disable local echo
*
*/
reg_mcr = flexcan_read(&regs->mcr);
reg_mcr |= FLEXCAN_MCR_FRZ | FLEXCAN_MCR_FEN | FLEXCAN_MCR_HALT |
FLEXCAN_MCR_SUPV | FLEXCAN_MCR_WRN_EN |
FLEXCAN_MCR_IDAM_C;
FLEXCAN_MCR_IDAM_C | FLEXCAN_MCR_SRX_DIS;
dev_dbg(dev->dev.parent, "%s: writing mcr=0x%08x", __func__, reg_mcr);
flexcan_write(reg_mcr, &regs->mcr);

Expand Down Expand Up @@ -970,15 +967,15 @@ static int __devinit flexcan_probe(struct platform_device *pdev)
goto failed_map;
}

dev = alloc_candev(sizeof(struct flexcan_priv), 0);
dev = alloc_candev(sizeof(struct flexcan_priv), 1);
if (!dev) {
err = -ENOMEM;
goto failed_alloc;
}

dev->netdev_ops = &flexcan_netdev_ops;
dev->irq = irq;
dev->flags |= IFF_ECHO; /* we support local echo in hardware */
dev->flags |= IFF_ECHO;

priv = netdev_priv(dev);
priv->can.clock.freq = clock_freq;
Expand Down

0 comments on commit d34f432

Please sign in to comment.