--- /dev/null
+kernel/2.6/include/linux/can/platform/sja1000.h
+kernel/2.6/include/linux/can/platform/mcp251x.h
+kernel/2.6/include/linux/can/dev.h
+kernel/2.6/include/linux/can/ioctl.h
+kernel/2.6/drivers/net/can/slcan.c
+kernel/2.6/drivers/net/can/sysfs.c
+kernel/2.6/drivers/net/can/softing/softing_cs.c
+kernel/2.6/drivers/net/can/softing/softing_fw.c
+kernel/2.6/drivers/net/can/softing/softing_main.c
+kernel/2.6/drivers/net/can/softing/softing.h
+kernel/2.6/drivers/net/can/softing/Makefile
+kernel/2.6/drivers/net/can/dev.c
+kernel/2.6/drivers/net/can/sysfs.h
+kernel/2.6/drivers/net/can/mcp251x.c
+kernel/2.6/drivers/net/can/Makefile
+kernel/2.6/drivers/net/can/mscan/mscan.c
+kernel/2.6/drivers/net/can/mscan/mpc52xx_can.c
+kernel/2.6/drivers/net/can/mscan/Makefile
+kernel/2.6/drivers/net/can/mscan/mscan.h
+kernel/2.6/drivers/net/can/sja1000/ixxat_pci.c
+kernel/2.6/drivers/net/can/sja1000/peak_pci.c
+kernel/2.6/drivers/net/can/sja1000/sja1000_platform.c
+kernel/2.6/drivers/net/can/sja1000/ems_pcmcia.c
+kernel/2.6/drivers/net/can/sja1000/pipcan.c
+kernel/2.6/drivers/net/can/sja1000/sja1000.c
+kernel/2.6/drivers/net/can/sja1000/sja1000.h
+kernel/2.6/drivers/net/can/sja1000/kvaser_pci.c
+kernel/2.6/drivers/net/can/sja1000/Makefile
+kernel/2.6/drivers/net/can/sja1000/ems_pci.c
+kernel/2.6/drivers/net/can/vcan.c
+kernel/2.6/drivers/net/can/Kconfig
+kernel/2.6/drivers/net/can/old/i82527/i82527.h
+kernel/2.6/drivers/net/can/old/i82527/proc.c
+kernel/2.6/drivers/net/can/old/i82527/i82527.c
+kernel/2.6/drivers/net/can/old/i82527/Makefile
+kernel/2.6/drivers/net/can/old/ccan/h7202_can.c
+kernel/2.6/drivers/net/can/old/ccan/ccan.c
+kernel/2.6/drivers/net/can/old/ccan/Makefile
+kernel/2.6/drivers/net/can/old/ccan/ccan.h
+kernel/2.6/drivers/net/can/old/mscan/mscan.c
+kernel/2.6/drivers/net/can/old/mscan/mpc52xx_can.c
+kernel/2.6/drivers/net/can/old/mscan/Makefile
+kernel/2.6/drivers/net/can/old/mscan/mscan.h
+kernel/2.6/drivers/net/can/old/hal/c200.c
+kernel/2.6/drivers/net/can/old/hal/hal.h
+kernel/2.6/drivers/net/can/old/hal/io.c
+kernel/2.6/drivers/net/can/old/hal/esdio.c
+kernel/2.6/drivers/net/can/old/hal/pc7io.c
+kernel/2.6/drivers/net/can/old/hal/iomem.c
+kernel/2.6/drivers/net/can/old/hal/gw2.c
+kernel/2.6/drivers/net/can/old/hal/iomux.c
+kernel/2.6/drivers/net/can/old/sja1000/proc.c
+kernel/2.6/drivers/net/can/old/sja1000/sja1000.c
+kernel/2.6/drivers/net/can/old/sja1000/sja1000.h
+kernel/2.6/drivers/net/can/old/sja1000/Makefile
+kernel/2.6/drivers/net/can/old/Kconfig
--- /dev/null
+diff -ruN linux-2.6.25-orig/drivers/net/can/Kconfig linux-2.6.25/drivers/net/can/Kconfig
+--- linux-2.6.25-orig/drivers/net/can/Kconfig 2008-04-17 04:49:44.000000000 +0200
++++ linux-2.6.25/drivers/net/can/Kconfig 1970-01-01 01:00:00.000000000 +0100
+@@ -1,25 +0,0 @@
+-menu "CAN Device Drivers"
+- depends on CAN
+-
+-config CAN_VCAN
+- tristate "Virtual Local CAN Interface (vcan)"
+- depends on CAN
+- default N
+- ---help---
+- Similar to the network loopback devices, vcan offers a
+- virtual local CAN interface.
+-
+- This driver can also be built as a module. If so, the module
+- will be called vcan.
+-
+-config CAN_DEBUG_DEVICES
+- bool "CAN devices debugging messages"
+- depends on CAN
+- default N
+- ---help---
+- Say Y here if you want the CAN device drivers to produce a bunch of
+- debug messages to the system log. Select this if you are having
+- a problem with CAN support and want to see more of what is going
+- on.
+-
+-endmenu
+diff -ruN linux-2.6.25-orig/drivers/net/can/Makefile linux-2.6.25/drivers/net/can/Makefile
+--- linux-2.6.25-orig/drivers/net/can/Makefile 2008-04-17 04:49:44.000000000 +0200
++++ linux-2.6.25/drivers/net/can/Makefile 1970-01-01 01:00:00.000000000 +0100
+@@ -1,5 +0,0 @@
+-#
+-# Makefile for the Linux Controller Area Network drivers.
+-#
+-
+-obj-$(CONFIG_CAN_VCAN) += vcan.o
+diff -ruN linux-2.6.25-orig/drivers/net/can/vcan.c linux-2.6.25/drivers/net/can/vcan.c
+--- linux-2.6.25-orig/drivers/net/can/vcan.c 2008-04-17 04:49:44.000000000 +0200
++++ linux-2.6.25/drivers/net/can/vcan.c 1970-01-01 01:00:00.000000000 +0100
+@@ -1,169 +0,0 @@
+-/*
+- * vcan.c - Virtual CAN interface
+- *
+- * Copyright (c) 2002-2007 Volkswagen Group Electronic Research
+- * All rights reserved.
+- *
+- * Redistribution and use in source and binary forms, with or without
+- * modification, are permitted provided that the following conditions
+- * are met:
+- * 1. Redistributions of source code must retain the above copyright
+- * notice, this list of conditions and the following disclaimer.
+- * 2. Redistributions in binary form must reproduce the above copyright
+- * notice, this list of conditions and the following disclaimer in the
+- * documentation and/or other materials provided with the distribution.
+- * 3. Neither the name of Volkswagen nor the names of its contributors
+- * may be used to endorse or promote products derived from this software
+- * without specific prior written permission.
+- *
+- * Alternatively, provided that this notice is retained in full, this
+- * software may be distributed under the terms of the GNU General
+- * Public License ("GPL") version 2, in which case the provisions of the
+- * GPL apply INSTEAD OF those given above.
+- *
+- * The provided data structures and external interfaces from this code
+- * are not restricted to be used by modules with a GPL compatible license.
+- *
+- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+- * DAMAGE.
+- *
+- * Send feedback to <socketcan-users@lists.berlios.de>
+- *
+- */
+-
+-#include <linux/module.h>
+-#include <linux/init.h>
+-#include <linux/netdevice.h>
+-#include <linux/if_arp.h>
+-#include <linux/if_ether.h>
+-#include <linux/can.h>
+-#include <net/rtnetlink.h>
+-
+-static __initdata const char banner[] =
+- KERN_INFO "vcan: Virtual CAN interface driver\n";
+-
+-MODULE_DESCRIPTION("virtual CAN interface");
+-MODULE_LICENSE("Dual BSD/GPL");
+-MODULE_AUTHOR("Urs Thuermann <urs.thuermann@volkswagen.de>");
+-
+-
+-/*
+- * CAN test feature:
+- * Enable the echo on driver level for testing the CAN core echo modes.
+- * See Documentation/networking/can.txt for details.
+- */
+-
+-static int echo; /* echo testing. Default: 0 (Off) */
+-module_param(echo, bool, S_IRUGO);
+-MODULE_PARM_DESC(echo, "Echo sent frames (for testing). Default: 0 (Off)");
+-
+-
+-static void vcan_rx(struct sk_buff *skb, struct net_device *dev)
+-{
+- struct net_device_stats *stats = &dev->stats;
+-
+- stats->rx_packets++;
+- stats->rx_bytes += skb->len;
+-
+- skb->protocol = htons(ETH_P_CAN);
+- skb->pkt_type = PACKET_BROADCAST;
+- skb->dev = dev;
+- skb->ip_summed = CHECKSUM_UNNECESSARY;
+-
+- netif_rx(skb);
+-}
+-
+-static int vcan_tx(struct sk_buff *skb, struct net_device *dev)
+-{
+- struct net_device_stats *stats = &dev->stats;
+- int loop;
+-
+- stats->tx_packets++;
+- stats->tx_bytes += skb->len;
+-
+- /* set flag whether this packet has to be looped back */
+- loop = skb->pkt_type == PACKET_LOOPBACK;
+-
+- if (!echo) {
+- /* no echo handling available inside this driver */
+-
+- if (loop) {
+- /*
+- * only count the packets here, because the
+- * CAN core already did the echo for us
+- */
+- stats->rx_packets++;
+- stats->rx_bytes += skb->len;
+- }
+- kfree_skb(skb);
+- return NETDEV_TX_OK;
+- }
+-
+- /* perform standard echo handling for CAN network interfaces */
+-
+- if (loop) {
+- struct sock *srcsk = skb->sk;
+-
+- skb = skb_share_check(skb, GFP_ATOMIC);
+- if (!skb)
+- return NETDEV_TX_OK;
+-
+- /* receive with packet counting */
+- skb->sk = srcsk;
+- vcan_rx(skb, dev);
+- } else {
+- /* no looped packets => no counting */
+- kfree_skb(skb);
+- }
+- return NETDEV_TX_OK;
+-}
+-
+-static void vcan_setup(struct net_device *dev)
+-{
+- dev->type = ARPHRD_CAN;
+- dev->mtu = sizeof(struct can_frame);
+- dev->hard_header_len = 0;
+- dev->addr_len = 0;
+- dev->tx_queue_len = 0;
+- dev->flags = IFF_NOARP;
+-
+- /* set flags according to driver capabilities */
+- if (echo)
+- dev->flags |= IFF_ECHO;
+-
+- dev->hard_start_xmit = vcan_tx;
+- dev->destructor = free_netdev;
+-}
+-
+-static struct rtnl_link_ops vcan_link_ops __read_mostly = {
+- .kind = "vcan",
+- .setup = vcan_setup,
+-};
+-
+-static __init int vcan_init_module(void)
+-{
+- printk(banner);
+-
+- if (echo)
+- printk(KERN_INFO "vcan: enabled echo on driver level.\n");
+-
+- return rtnl_link_register(&vcan_link_ops);
+-}
+-
+-static __exit void vcan_cleanup_module(void)
+-{
+- rtnl_link_unregister(&vcan_link_ops);
+-}
+-
+-module_init(vcan_init_module);
+-module_exit(vcan_cleanup_module);