I'm going to apply this patch to the trunk later today to fix version dependencies with 2.6.31. I didn't fix the old drivers, though. Still, not all drivers use TX_* return codes for the xmit function.
Wolfgang. can: Handle netdev->last_rx and netdev_tx_t properly for 2.6.31 Signed-off-by: Wolfgang Grandegger <[email protected]> --- kernel/2.6/drivers/net/can/cc770/cc770.c | 8 ++++++++ kernel/2.6/drivers/net/can/dev.c | 2 ++ kernel/2.6/drivers/net/can/ems_usb.c | 9 +++++++++ kernel/2.6/drivers/net/can/esd_pci331.c | 9 +++++++++ kernel/2.6/drivers/net/can/mcp251x.c | 5 +++++ kernel/2.6/drivers/net/can/mscan/mscan.c | 6 ++++++ kernel/2.6/drivers/net/can/sja1000/sja1000.c | 9 +++++++++ kernel/2.6/drivers/net/can/slcan.c | 6 ++++++ kernel/2.6/drivers/net/can/softing/softing_main.c | 7 +++++++ 9 files changed, 61 insertions(+) Index: trunk/kernel/2.6/drivers/net/can/cc770/cc770.c =================================================================== --- trunk.orig/kernel/2.6/drivers/net/can/cc770/cc770.c +++ trunk/kernel/2.6/drivers/net/can/cc770/cc770.c @@ -422,7 +422,11 @@ static int cc770_set_bittiming(struct ne return 0; } +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,31) static int cc770_start_xmit(struct sk_buff *skb, struct net_device *dev) +#else +static netdev_tx_t cc770_start_xmit(struct sk_buff *skb, struct net_device *dev) +#endif { struct cc770_priv *priv = netdev_priv(dev); #if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,23) @@ -557,7 +561,9 @@ static void cc770_rx(struct net_device * } netif_rx(skb); +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,31) dev->last_rx = jiffies; +#endif stats->rx_packets++; stats->rx_bytes += cf->can_dlc; } @@ -627,7 +633,9 @@ static int cc770_err(struct net_device * netif_rx(skb); +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,31) dev->last_rx = jiffies; +#endif stats->rx_packets++; stats->rx_bytes += cf->can_dlc; Index: trunk/kernel/2.6/drivers/net/can/dev.c =================================================================== --- trunk.orig/kernel/2.6/drivers/net/can/dev.c +++ trunk/kernel/2.6/drivers/net/can/dev.c @@ -404,7 +404,9 @@ void can_restart(unsigned long data) netif_rx(skb); +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,31) dev->last_rx = jiffies; +#endif stats->rx_packets++; stats->rx_bytes += cf->can_dlc; Index: trunk/kernel/2.6/drivers/net/can/ems_usb.c =================================================================== --- trunk.orig/kernel/2.6/drivers/net/can/ems_usb.c +++ trunk/kernel/2.6/drivers/net/can/ems_usb.c @@ -333,7 +333,9 @@ static void ems_usb_rx_can_msg(struct em netif_rx(skb); +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,31) dev->netdev->last_rx = jiffies; +#endif stats->rx_packets++; stats->rx_bytes += cf->can_dlc; } @@ -418,7 +420,9 @@ static void ems_usb_rx_err(struct ems_us netif_rx(skb); +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,31) dev->netdev->last_rx = jiffies; +#endif stats->rx_packets++; stats->rx_bytes += cf->can_dlc; } @@ -762,7 +766,12 @@ static int ems_usb_open(struct net_devic return 0; } +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,31) static int ems_usb_start_xmit(struct sk_buff *skb, struct net_device *netdev) +#else +static netdev_tx_t ems_usb_start_xmit(struct sk_buff *skb, + struct net_device *netdev) +#endif { struct ems_usb *dev = netdev_priv(netdev); struct ems_tx_urb_context *context = NULL; Index: trunk/kernel/2.6/drivers/net/can/esd_pci331.c =================================================================== --- trunk.orig/kernel/2.6/drivers/net/can/esd_pci331.c +++ trunk/kernel/2.6/drivers/net/can/esd_pci331.c @@ -458,7 +458,9 @@ static int esd331_create_err_frame(struc netif_rx(skb); +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,31) dev->last_rx = jiffies; +#endif stats->rx_packets++; stats->rx_bytes += cf->can_dlc; @@ -509,7 +511,9 @@ static void esd331_irq_rx(struct net_dev netif_rx(skb); +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,31) dev->last_rx = jiffies; +#endif stats->rx_packets++; stats->rx_bytes += cfrm->can_dlc; } @@ -686,7 +690,12 @@ static int esd331_close(struct net_devic return 0; } +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,31) static int esd331_start_xmit(struct sk_buff *skb, struct net_device *dev) +#else +static netdev_tx_t esd331_start_xmit(struct sk_buff *skb, + struct net_device *dev) +#endif { struct esd331_priv *priv = netdev_priv(dev); #if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,23) Index: trunk/kernel/2.6/drivers/net/can/mscan/mscan.c =================================================================== --- trunk.orig/kernel/2.6/drivers/net/can/mscan/mscan.c +++ trunk/kernel/2.6/drivers/net/can/mscan/mscan.c @@ -224,7 +224,11 @@ static int mscan_start(struct net_device return 0; } +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,31) static int mscan_start_xmit(struct sk_buff *skb, struct net_device *dev) +#else +static netdev_tx_t mscan_start_xmit(struct sk_buff *skb, struct net_device *dev) +#endif { struct can_frame *frame = (struct can_frame *)skb->data; struct mscan_regs *regs = (struct mscan_regs *)dev->base_addr; @@ -399,7 +403,9 @@ static int mscan_rx_poll(struct net_devi } out_8(®s->canrflg, MSCAN_RXF); +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,31) dev->last_rx = jiffies; +#endif stats->rx_packets++; stats->rx_bytes += frame->can_dlc; } else if (canrflg & MSCAN_ERR_IF) { Index: trunk/kernel/2.6/drivers/net/can/sja1000/sja1000.c =================================================================== --- trunk.orig/kernel/2.6/drivers/net/can/sja1000/sja1000.c +++ trunk/kernel/2.6/drivers/net/can/sja1000/sja1000.c @@ -242,7 +242,12 @@ static void chipset_init(struct net_devi * xx xx xx xx ff ll 00 11 22 33 44 55 66 77 * [ can-id ] [flags] [len] [can data (up to 8 bytes] */ +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,31) static int sja1000_start_xmit(struct sk_buff *skb, struct net_device *dev) +#else +static netdev_tx_t sja1000_start_xmit(struct sk_buff *skb, + struct net_device *dev) +#endif { struct sja1000_priv *priv = netdev_priv(dev); struct can_frame *cf = (struct can_frame *)skb->data; @@ -345,7 +350,9 @@ static void sja1000_rx(struct net_device netif_rx(skb); +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,31) dev->last_rx = jiffies; +#endif stats->rx_packets++; stats->rx_bytes += dlc; } @@ -464,7 +471,9 @@ static int sja1000_err(struct net_device netif_rx(skb); +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,31) dev->last_rx = jiffies; +#endif stats->rx_packets++; stats->rx_bytes += cf->can_dlc; Index: trunk/kernel/2.6/drivers/net/can/slcan.c =================================================================== --- trunk.orig/kernel/2.6/drivers/net/can/slcan.c +++ trunk/kernel/2.6/drivers/net/can/slcan.c @@ -301,7 +301,9 @@ static void slc_bump(struct slcan *sl) &cf, sizeof(struct can_frame)); netif_rx(skb); +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,31) sl->dev->last_rx = jiffies; +#endif stats->rx_packets++; stats->rx_bytes += cf.can_dlc; } @@ -468,7 +470,11 @@ out: ******************************************/ /* Send a can_frame to a TTY queue. */ +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,31) static int slc_xmit(struct sk_buff *skb, struct net_device *dev) +#else +static netdev_tx_t slc_xmit(struct sk_buff *skb, struct net_device *dev) +#endif { struct slcan *sl = netdev_priv(dev); Index: trunk/kernel/2.6/drivers/net/can/softing/softing_main.c =================================================================== --- trunk.orig/kernel/2.6/drivers/net/can/softing/softing_main.c +++ trunk/kernel/2.6/drivers/net/can/softing/softing_main.c @@ -46,7 +46,12 @@ static inline int canif_is_active(struct } /* trigger the tx queue-ing */ +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,31) static int netdev_start_xmit(struct sk_buff *skb, struct net_device *dev) +#else +static netdev_tx_t netdev_start_xmit(struct sk_buff *skb, + struct net_device *dev) +#endif { struct softing_priv *priv = netdev_priv(dev); struct softing *card = priv->card; @@ -330,7 +335,9 @@ static int softing_dev_svc_once(struct s } else { ++stats->rx_packets; stats->rx_bytes += msg.can_dlc; +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,31) bus->netdev->last_rx = jiffies; +#endif softing_rx(bus->netdev, &msg, ktime); } } Index: trunk/kernel/2.6/drivers/net/can/mcp251x.c =================================================================== --- trunk.orig/kernel/2.6/drivers/net/can/mcp251x.c +++ trunk/kernel/2.6/drivers/net/can/mcp251x.c @@ -481,7 +481,12 @@ static void mcp251x_hw_wakeup(struct spi dev_err(&spi->dev, "MCP251x didn't wake-up\n"); } +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,31) static int mcp251x_hard_start_xmit(struct sk_buff *skb, struct net_device *net) +#else +static netdev_tx_t mcp251x_hard_start_xmit(struct sk_buff *skb, + struct net_device *net) +#endif { struct mcp251x_priv *priv = netdev_priv(net); struct spi_device *spi = priv->spi; _______________________________________________ Socketcan-core mailing list [email protected] https://lists.berlios.de/mailman/listinfo/socketcan-core
