-Index: linux-2.6.23.17/fs/Kconfig
-===================================================================
---- linux-2.6.23.17.orig/fs/Kconfig
-+++ linux-2.6.23.17/fs/Kconfig
-@@ -1364,6 +1364,71 @@ config CRAMFS
+--- a/fs/Kconfig
++++ b/fs/Kconfig
+@@ -1364,6 +1364,71 @@
If unsure, say N.
config VXFS_FS
tristate "FreeVxFS file system support (VERITAS VxFS(TM) compatible)"
depends on BLOCK
-Index: linux-2.6.23.17/fs/Makefile
-===================================================================
---- linux-2.6.23.17.orig/fs/Makefile
-+++ linux-2.6.23.17/fs/Makefile
-@@ -72,6 +72,7 @@ obj-$(CONFIG_JBD) += jbd/
+--- a/fs/Makefile
++++ b/fs/Makefile
+@@ -72,6 +72,7 @@
obj-$(CONFIG_JBD2) += jbd2/
obj-$(CONFIG_EXT2_FS) += ext2/
obj-$(CONFIG_CRAMFS) += cramfs/
obj-$(CONFIG_RAMFS) += ramfs/
obj-$(CONFIG_HUGETLBFS) += hugetlbfs/
obj-$(CONFIG_CODA_FS) += coda/
-Index: linux-2.6.23.17/fs/squashfs/inode.c
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/fs/squashfs/inode.c
++++ b/fs/squashfs/inode.c
@@ -0,0 +1,2122 @@
+/*
+ * Squashfs - a compressed read only filesystem for Linux
+MODULE_DESCRIPTION("squashfs, a compressed read-only filesystem");
+MODULE_AUTHOR("Phillip Lougher <phillip@lougher.org.uk>");
+MODULE_LICENSE("GPL");
-Index: linux-2.6.23.17/fs/squashfs/Makefile
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/fs/squashfs/Makefile
++++ b/fs/squashfs/Makefile
@@ -0,0 +1,7 @@
+#
+# Makefile for the linux squashfs routines.
+obj-$(CONFIG_SQUASHFS) += squashfs.o
+squashfs-y += inode.o
+squashfs-y += squashfs2_0.o
-Index: linux-2.6.23.17/fs/squashfs/squashfs2_0.c
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/fs/squashfs/squashfs2_0.c
++++ b/fs/squashfs/squashfs2_0.c
@@ -0,0 +1,758 @@
+/*
+ * Squashfs - a compressed read only filesystem for Linux
+
+ return 1;
+}
-Index: linux-2.6.23.17/fs/squashfs/squashfs.h
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/fs/squashfs/squashfs.h
++++ b/fs/squashfs/squashfs.h
@@ -0,0 +1,86 @@
+/*
+ * Squashfs - a compressed read only filesystem for Linux
+ return 0;
+}
+#endif
-Index: linux-2.6.23.17/include/linux/magic.h
-===================================================================
---- linux-2.6.23.17.orig/include/linux/magic.h
-+++ linux-2.6.23.17/include/linux/magic.h
+--- a/include/linux/magic.h
++++ b/include/linux/magic.h
@@ -35,6 +35,9 @@
#define REISER2FS_SUPER_MAGIC_STRING "ReIsEr2Fs"
#define REISER2FS_JR_SUPER_MAGIC_STRING "ReIsEr3Fs"
#define SMB_SUPER_MAGIC 0x517B
#define USBDEVICE_SUPER_MAGIC 0x9fa2
-Index: linux-2.6.23.17/include/linux/squashfs_fs.h
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/include/linux/squashfs_fs.h
++++ b/include/linux/squashfs_fs.h
@@ -0,0 +1,911 @@
+#ifndef SQUASHFS_FS
+#define SQUASHFS_FS
+
+#endif
+#endif
-Index: linux-2.6.23.17/include/linux/squashfs_fs_i.h
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/include/linux/squashfs_fs_i.h
++++ b/include/linux/squashfs_fs_i.h
@@ -0,0 +1,45 @@
+#ifndef SQUASHFS_FS_I
+#define SQUASHFS_FS_I
+ struct inode vfs_inode;
+};
+#endif
-Index: linux-2.6.23.17/include/linux/squashfs_fs_sb.h
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/include/linux/squashfs_fs_sb.h
++++ b/include/linux/squashfs_fs_sb.h
@@ -0,0 +1,74 @@
+#ifndef SQUASHFS_FS_SB
+#define SQUASHFS_FS_SB
+ int (*read_fragment_index_table)(struct super_block *s);
+};
+#endif
-Index: linux-2.6.23.17/init/do_mounts_rd.c
-===================================================================
---- linux-2.6.23.17.orig/init/do_mounts_rd.c
-+++ linux-2.6.23.17/init/do_mounts_rd.c
+--- a/init/do_mounts_rd.c
++++ b/init/do_mounts_rd.c
@@ -5,6 +5,7 @@
#include <linux/ext2_fs.h>
#include <linux/romfs_fs.h>
#include <linux/initrd.h>
#include <linux/string.h>
-@@ -39,6 +40,7 @@ static int __init crd_load(int in_fd, in
+@@ -39,6 +40,7 @@
* numbers could not be found.
*
* We currently check for the following magic numbers:
* minix
* ext2
* romfs
-@@ -53,6 +55,7 @@ identify_ramdisk_image(int fd, int start
+@@ -53,6 +55,7 @@
struct ext2_super_block *ext2sb;
struct romfs_super_block *romfsb;
struct cramfs_super *cramfsb;
int nblocks = -1;
unsigned char *buf;
-@@ -64,6 +67,7 @@ identify_ramdisk_image(int fd, int start
+@@ -64,6 +67,7 @@
ext2sb = (struct ext2_super_block *) buf;
romfsb = (struct romfs_super_block *) buf;
cramfsb = (struct cramfs_super *) buf;
memset(buf, 0xe5, size);
/*
-@@ -101,6 +105,15 @@ identify_ramdisk_image(int fd, int start
+@@ -101,6 +105,15 @@
goto done;
}
-Index: linux-2.6.23.17/include/linux/LzmaDecode.h
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/include/linux/LzmaDecode.h
++++ b/include/linux/LzmaDecode.h
@@ -0,0 +1,100 @@
+/*
+ LzmaDecode.h
+ UInt32 *outSizeProcessed);
+
+#endif
-Index: linux-2.6.23.17/lib/LzmaDecode.c
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/lib/LzmaDecode.c
++++ b/lib/LzmaDecode.c
@@ -0,0 +1,663 @@
+/*
+ LzmaDecode.c
+ *outSizeProcessed = nowPos;
+ return LZMA_RESULT_OK;
+}
-Index: linux-2.6.23.17/lib/Makefile
-===================================================================
---- linux-2.6.23.17.orig/lib/Makefile
-+++ linux-2.6.23.17/lib/Makefile
-@@ -13,7 +13,7 @@ lib-$(CONFIG_SMP) += cpumask.o
+--- a/lib/Makefile
++++ b/lib/Makefile
+@@ -13,7 +13,7 @@
lib-y += kobject.o kref.o kobject_uevent.o klist.o
obj-y += div64.o sort.o parser.o halfmd4.o debug_locks.o random32.o \
ifeq ($(CONFIG_DEBUG_KOBJECT),y)
CFLAGS_kobject.o += -DDEBUG
-@@ -62,6 +62,7 @@ obj-$(CONFIG_SMP) += percpu_counter.o
+@@ -62,6 +62,7 @@
obj-$(CONFIG_AUDIT_GENERIC) += audit.o
obj-$(CONFIG_SWIOTLB) += swiotlb.o
-Index: linux-2.6.23.17/fs/squashfs/inode.c
-===================================================================
---- linux-2.6.23.17.orig/fs/squashfs/inode.c
-+++ linux-2.6.23.17/fs/squashfs/inode.c
+--- a/fs/squashfs/inode.c
++++ b/fs/squashfs/inode.c
@@ -4,6 +4,9 @@
* Copyright (c) 2002, 2003, 2004, 2005, 2006
* Phillip Lougher <phillip@lougher.org.uk>
static void squashfs_put_super(struct super_block *);
static int squashfs_statfs(struct dentry *, struct kstatfs *);
static int squashfs_symlink_readpage(struct file *file, struct page *page);
-@@ -64,7 +81,11 @@ static int squashfs_get_sb(struct file_s
+@@ -64,7 +81,11 @@
const char *, void *, struct vfsmount *);
static struct file_system_type squashfs_fs_type = {
.owner = THIS_MODULE,
-@@ -249,6 +270,15 @@ SQSH_EXTERN unsigned int squashfs_read_d
+@@ -249,6 +270,15 @@
if (compressed) {
int zlib_err;
stream.next_in = c_buffer;
stream.avail_in = c_byte;
stream.next_out = buffer;
-@@ -263,7 +293,7 @@ SQSH_EXTERN unsigned int squashfs_read_d
+@@ -263,7 +293,7 @@
bytes = 0;
} else
bytes = stream.total_out;
up(&msblk->read_data_mutex);
}
-@@ -2045,15 +2075,19 @@ static int __init init_squashfs_fs(void)
+@@ -2045,15 +2075,19 @@
printk(KERN_INFO "squashfs: version 3.0 (2006/03/15) "
"Phillip Lougher\n");
destroy_inodecache();
}
-@@ -2064,7 +2098,9 @@ out:
+@@ -2064,7 +2098,9 @@
static void __exit exit_squashfs_fs(void)
{
-Index: linux-2.6.23.17/Makefile
-===================================================================
---- linux-2.6.23.17.orig/Makefile
-+++ linux-2.6.23.17/Makefile
-@@ -508,6 +508,9 @@ CFLAGS += $(call cc-option, -fn
+--- a/Makefile
++++ b/Makefile
+@@ -508,6 +508,9 @@
NOSTDINC_FLAGS += -nostdinc -isystem $(shell $(CC) -print-file-name=include)
CHECKFLAGS += $(NOSTDINC_FLAGS)
-Index: linux-2.6.23.17/include/asm-mips/system.h
-===================================================================
---- linux-2.6.23.17.orig/include/asm-mips/system.h
-+++ linux-2.6.23.17/include/asm-mips/system.h
-@@ -181,7 +181,7 @@ extern __u64 __xchg_u64_unsupported_on_3
+--- a/include/asm-mips/system.h
++++ b/include/asm-mips/system.h
+@@ -181,7 +181,7 @@
if something tries to do an invalid xchg(). */
extern void __xchg_called_with_bad_pointer(void);
-Index: linux-2.6.23.17/drivers/mtd/chips/cfi_cmdset_0002.c
-===================================================================
---- linux-2.6.23.17.orig/drivers/mtd/chips/cfi_cmdset_0002.c
-+++ linux-2.6.23.17/drivers/mtd/chips/cfi_cmdset_0002.c
+--- a/drivers/mtd/chips/cfi_cmdset_0002.c
++++ b/drivers/mtd/chips/cfi_cmdset_0002.c
@@ -51,6 +51,7 @@
#define SST49LF040B 0x0050
#define SST49LF008A 0x005a
static int cfi_amdstd_read (struct mtd_info *, loff_t, size_t, size_t *, u_char *);
static int cfi_amdstd_write_words(struct mtd_info *, loff_t, size_t, size_t *, const u_char *);
-@@ -294,12 +295,19 @@ struct mtd_info *cfi_cmdset_0002(struct
+@@ -294,12 +295,19 @@
if (extp->MajorVersion != '1' ||
(extp->MinorVersion < '0' || extp->MinorVersion > '4')) {
-Index: linux-2.6.23.17/drivers/mtd/chips/cfi_cmdset_0001.c
-===================================================================
---- linux-2.6.23.17.orig/drivers/mtd/chips/cfi_cmdset_0001.c
-+++ linux-2.6.23.17/drivers/mtd/chips/cfi_cmdset_0001.c
-@@ -933,7 +933,7 @@ static void __xipram xip_enable(struct m
+--- a/drivers/mtd/chips/cfi_cmdset_0001.c
++++ b/drivers/mtd/chips/cfi_cmdset_0001.c
+@@ -933,7 +933,7 @@
static int __xipram xip_wait_for_operation(
struct map_info *map, struct flchip *chip,
{
struct cfi_private *cfi = map->fldrv_priv;
struct cfi_pri_intelext *cfip = cfi->cmdset_priv;
-@@ -942,7 +942,7 @@ static int __xipram xip_wait_for_operati
+@@ -942,7 +942,7 @@
flstate_t oldstate, newstate;
start = xip_currtime();
if (usec == 0)
usec = 500000;
done = 0;
-@@ -1052,8 +1052,8 @@ static int __xipram xip_wait_for_operati
+@@ -1052,8 +1052,8 @@
#define XIP_INVAL_CACHED_RANGE(map, from, size) \
INVALIDATE_CACHED_RANGE(map, from, size)
#else
-@@ -1065,65 +1065,65 @@ static int __xipram xip_wait_for_operati
+@@ -1065,65 +1065,65 @@
static int inval_cache_and_wait_for_operation(
struct map_info *map, struct flchip *chip,
unsigned long cmd_adr, unsigned long inval_adr, int inval_len,
/* Done and happy. */
chip->state = FL_STATUS;
return 0;
-@@ -1132,7 +1132,8 @@ static int inval_cache_and_wait_for_oper
+@@ -1132,7 +1132,8 @@
#endif
#define WAIT_TIMEOUT(map, chip, adr, udelay) \
static int do_point_onechip (struct map_info *map, struct flchip *chip, loff_t adr, size_t len)
-@@ -1356,7 +1357,7 @@ static int __xipram do_write_oneword(str
+@@ -1356,7 +1357,7 @@
ret = INVAL_CACHE_AND_WAIT(map, chip, adr,
adr, map_bankwidth(map),
if (ret) {
xip_enable(map, chip, adr);
printk(KERN_ERR "%s: word write error (status timeout)\n", map->name);
-@@ -1593,7 +1594,7 @@ static int __xipram do_write_buffer(stru
+@@ -1593,7 +1594,7 @@
ret = INVAL_CACHE_AND_WAIT(map, chip, cmd_adr,
adr, len,
if (ret) {
map_write(map, CMD(0x70), cmd_adr);
chip->state = FL_STATUS;
-@@ -1728,7 +1729,7 @@ static int __xipram do_erase_oneblock(st
+@@ -1728,7 +1729,7 @@
ret = INVAL_CACHE_AND_WAIT(map, chip, adr,
adr, len,
-Index: linux-2.6.23.17/fs/squashfs/Makefile
-===================================================================
---- linux-2.6.23.17.orig/fs/squashfs/Makefile
-+++ linux-2.6.23.17/fs/squashfs/Makefile
+--- a/fs/squashfs/Makefile
++++ b/fs/squashfs/Makefile
@@ -4,4 +4,3 @@
obj-$(CONFIG_SQUASHFS) += squashfs.o
squashfs-y += inode.o
-squashfs-y += squashfs2_0.o
-Index: linux-2.6.23.17/fs/squashfs/squashfs.h
-===================================================================
---- linux-2.6.23.17.orig/fs/squashfs/squashfs.h
-+++ linux-2.6.23.17/fs/squashfs/squashfs.h
+--- a/fs/squashfs/squashfs.h
++++ b/fs/squashfs/squashfs.h
@@ -24,6 +24,9 @@
#ifdef CONFIG_SQUASHFS_1_0_COMPATIBILITY
#undef CONFIG_SQUASHFS_1_0_COMPATIBILITY
-Index: linux-2.6.23.17/arch/mips/kernel/head.S
-===================================================================
---- linux-2.6.23.17.orig/arch/mips/kernel/head.S
-+++ linux-2.6.23.17/arch/mips/kernel/head.S
+--- a/arch/mips/kernel/head.S
++++ b/arch/mips/kernel/head.S
@@ -130,6 +130,8 @@
#endif
.endm
-Index: linux-2.6.23.17/arch/mips/mm/tlbex.c
-===================================================================
---- linux-2.6.23.17.orig/arch/mips/mm/tlbex.c
-+++ linux-2.6.23.17/arch/mips/mm/tlbex.c
-@@ -902,7 +902,6 @@ static __init void build_tlb_write_entry
+--- a/arch/mips/mm/tlbex.c
++++ b/arch/mips/mm/tlbex.c
+@@ -902,7 +902,6 @@
case CPU_R10000:
case CPU_R12000:
case CPU_R14000:
case CPU_SB1:
case CPU_SB1A:
case CPU_4KSC:
-@@ -933,6 +932,7 @@ static __init void build_tlb_write_entry
+@@ -933,6 +932,7 @@
tlbw(p);
break;
-Index: linux-2.6.23.17/arch/mips/kernel/gdb-stub.c
-===================================================================
---- linux-2.6.23.17.orig/arch/mips/kernel/gdb-stub.c
-+++ linux-2.6.23.17/arch/mips/kernel/gdb-stub.c
-@@ -656,6 +656,7 @@ void set_async_breakpoint(unsigned long
+--- a/arch/mips/kernel/gdb-stub.c
++++ b/arch/mips/kernel/gdb-stub.c
+@@ -656,6 +656,7 @@
*epc = (unsigned long)async_breakpoint;
}
static void kgdb_wait(void *arg)
{
unsigned flags;
-@@ -668,6 +669,7 @@ static void kgdb_wait(void *arg)
+@@ -668,6 +669,7 @@
local_irq_restore(flags);
}
-Index: linux-2.6.23.17/drivers/mtd/devices/block2mtd.c
-===================================================================
---- linux-2.6.23.17.orig/drivers/mtd/devices/block2mtd.c
-+++ linux-2.6.23.17/drivers/mtd/devices/block2mtd.c
+--- a/drivers/mtd/devices/block2mtd.c
++++ b/drivers/mtd/devices/block2mtd.c
@@ -16,6 +16,7 @@
#include <linux/list.h>
#include <linux/init.h>
#include <linux/buffer_head.h>
#include <linux/mutex.h>
#include <linux/mount.h>
-@@ -237,10 +238,11 @@ static void block2mtd_free_device(struct
+@@ -237,10 +238,11 @@
/* FIXME: ensure that mtd->size % erase_size == 0 */
if (!devname)
return NULL;
-@@ -279,14 +281,18 @@ static struct block2mtd_dev *add_device(
+@@ -279,14 +281,18 @@
/* Setup the MTD structure */
/* make the name contain the block device in */
dev->mtd.erasesize = erase_size;
dev->mtd.writesize = 1;
dev->mtd.type = MTD_RAM;
-@@ -298,15 +304,18 @@ static struct block2mtd_dev *add_device(
+@@ -298,15 +304,18 @@
dev->mtd.read = block2mtd_read;
dev->mtd.priv = dev;
dev->mtd.owner = THIS_MODULE;
return dev;
devinit_err:
-@@ -379,9 +388,9 @@ static char block2mtd_paramline[80 + 12]
+@@ -379,9 +388,9 @@
static int block2mtd_setup2(const char *val)
{
char *name;
size_t erase_size = PAGE_SIZE;
int i, ret;
-@@ -392,7 +401,7 @@ static int block2mtd_setup2(const char *
+@@ -392,7 +401,7 @@
strcpy(str, val);
kill_final_newline(str);
token[i] = strsep(&str, ",");
if (str)
-@@ -412,8 +421,10 @@ static int block2mtd_setup2(const char *
+@@ -412,8 +421,10 @@
parse_err("illegal erase size");
}
}
return 0;
}
-@@ -447,7 +458,7 @@ static int block2mtd_setup(const char *v
+@@ -447,7 +458,7 @@
module_param_call(block2mtd, block2mtd_setup, NULL, NULL, 0200);
-Index: linux-2.6.23.17/drivers/mtd/Kconfig
-===================================================================
---- linux-2.6.23.17.orig/drivers/mtd/Kconfig
-+++ linux-2.6.23.17/drivers/mtd/Kconfig
-@@ -47,6 +47,16 @@ config MTD_PARTITIONS
+--- a/drivers/mtd/Kconfig
++++ b/drivers/mtd/Kconfig
+@@ -47,6 +47,16 @@
devices. Partitioning on NFTL 'devices' is a different - that's the
'normal' form of partitioning used on a block device.
config MTD_REDBOOT_PARTS
tristate "RedBoot partition table parsing"
depends on MTD_PARTITIONS
-Index: linux-2.6.23.17/drivers/mtd/mtdpart.c
-===================================================================
---- linux-2.6.23.17.orig/drivers/mtd/mtdpart.c
-+++ linux-2.6.23.17/drivers/mtd/mtdpart.c
+--- a/drivers/mtd/mtdpart.c
++++ b/drivers/mtd/mtdpart.c
@@ -20,6 +20,8 @@
#include <linux/mtd/mtd.h>
#include <linux/mtd/partitions.h>
/* Our partition linked list */
static LIST_HEAD(mtd_partitions);
-@@ -39,7 +41,7 @@ struct mtd_part {
+@@ -39,7 +41,7 @@
* the pointer to that structure with this macro.
*/
#define PART(x) ((struct mtd_part *)(x))
/*
* MTD methods which simply translate the effective address and pass through
-@@ -308,6 +310,312 @@ int del_mtd_partitions(struct mtd_info *
+@@ -308,6 +310,312 @@
return 0;
}
/*
* This function, given a master MTD object and a partition table, creates
* and registers slave MTD objects which are bound to the master according to
-@@ -320,168 +628,31 @@ int add_mtd_partitions(struct mtd_info *
+@@ -320,168 +628,31 @@
int nbparts)
{
struct mtd_part *slave;
}
}
-@@ -557,6 +728,32 @@ int parse_mtd_partitions(struct mtd_info
+@@ -557,6 +728,32 @@
return ret;
}
+EXPORT_SYMBOL_GPL(refresh_mtd_partitions);
EXPORT_SYMBOL_GPL(register_mtd_parser);
EXPORT_SYMBOL_GPL(deregister_mtd_parser);
-Index: linux-2.6.23.17/drivers/mtd/devices/block2mtd.c
-===================================================================
---- linux-2.6.23.17.orig/drivers/mtd/devices/block2mtd.c
-+++ linux-2.6.23.17/drivers/mtd/devices/block2mtd.c
-@@ -34,6 +34,8 @@ struct block2mtd_dev {
+--- a/drivers/mtd/devices/block2mtd.c
++++ b/drivers/mtd/devices/block2mtd.c
+@@ -34,6 +34,8 @@
struct block_device *blkdev;
struct mtd_info mtd;
struct mutex write_mutex;
};
-@@ -86,6 +88,12 @@ static int block2mtd_erase(struct mtd_in
+@@ -86,6 +88,12 @@
size_t len = instr->len;
int err;
instr->state = MTD_ERASING;
mutex_lock(&dev->write_mutex);
err = _block2mtd_erase(dev, from, len);
-@@ -98,6 +106,10 @@ static int block2mtd_erase(struct mtd_in
+@@ -98,6 +106,10 @@
instr->state = MTD_ERASE_DONE;
mtd_erase_callback(instr);
return err;
}
-@@ -109,10 +121,14 @@ static int block2mtd_read(struct mtd_inf
+@@ -109,10 +121,14 @@
struct page *page;
int index = from >> PAGE_SHIFT;
int offset = from & (PAGE_SIZE-1);
if (from + len > mtd->size)
len = mtd->size - from;
-@@ -127,10 +143,14 @@ static int block2mtd_read(struct mtd_inf
+@@ -127,10 +143,14 @@
len = len - cpylen;
page = page_read(dev->blkdev->bd_inode->i_mapping, index);
memcpy(buf, page_address(page) + offset, cpylen);
page_cache_release(page);
-@@ -141,7 +161,10 @@ static int block2mtd_read(struct mtd_inf
+@@ -141,7 +161,10 @@
offset = 0;
index++;
}
}
-@@ -193,12 +216,22 @@ static int block2mtd_write(struct mtd_in
+@@ -193,12 +216,22 @@
size_t *retlen, const u_char *buf)
{
struct block2mtd_dev *dev = mtd->priv;
if (to + len > mtd->size)
len = mtd->size - to;
-@@ -207,6 +240,9 @@ static int block2mtd_write(struct mtd_in
+@@ -207,6 +240,9 @@
mutex_unlock(&dev->write_mutex);
if (err > 0)
err = 0;
return err;
}
-@@ -215,51 +251,29 @@ static int block2mtd_write(struct mtd_in
+@@ -215,51 +251,29 @@
static void block2mtd_sync(struct mtd_info *mtd)
{
struct block2mtd_dev *dev = mtd->priv;
if (devt) {
bdev = open_by_devnum(devt, FMODE_WRITE | FMODE_READ);
}
-@@ -267,17 +281,96 @@ static struct block2mtd_dev *add_device(
+@@ -267,17 +281,96 @@
#endif
if (IS_ERR(bdev)) {
/* Setup the MTD structure */
/* make the name contain the block device in */
-@@ -304,6 +397,7 @@ static struct block2mtd_dev *add_device(
+@@ -304,6 +397,7 @@
dev->mtd.read = block2mtd_read;
dev->mtd.priv = dev;
dev->mtd.owner = THIS_MODULE;
part = kzalloc(sizeof(struct mtd_partition), GFP_KERNEL);
part->name = dev->mtd.name;
-Index: linux-2.6.23.17/drivers/mtd/mtdchar.c
-===================================================================
---- linux-2.6.23.17.orig/drivers/mtd/mtdchar.c
-+++ linux-2.6.23.17/drivers/mtd/mtdchar.c
+--- a/drivers/mtd/mtdchar.c
++++ b/drivers/mtd/mtdchar.c
@@ -17,6 +17,7 @@
#include <linux/mtd/mtd.h>
#include <asm/uaccess.h>
-@@ -753,6 +754,13 @@ static int mtd_ioctl(struct inode *inode
+@@ -753,6 +754,13 @@
file->f_pos = 0;
break;
}
default:
ret = -ENOTTY;
-Index: linux-2.6.23.17/include/linux/mtd/mtd.h
-===================================================================
---- linux-2.6.23.17.orig/include/linux/mtd/mtd.h
-+++ linux-2.6.23.17/include/linux/mtd/mtd.h
-@@ -98,6 +98,7 @@ struct mtd_oob_ops {
+--- a/include/linux/mtd/mtd.h
++++ b/include/linux/mtd/mtd.h
+@@ -98,6 +98,7 @@
uint8_t *oobbuf;
};
struct mtd_info {
u_char type;
u_int32_t flags;
-@@ -195,6 +196,9 @@ struct mtd_info {
+@@ -195,6 +196,9 @@
struct module *owner;
int usecount;
/* If the driver is something smart, like UBI, it may need to maintain
* its own reference counting. The below functions are only for driver.
* The driver may register its callbacks. These callbacks are not
-Index: linux-2.6.23.17/include/linux/mtd/partitions.h
-===================================================================
---- linux-2.6.23.17.orig/include/linux/mtd/partitions.h
-+++ linux-2.6.23.17/include/linux/mtd/partitions.h
+--- a/include/linux/mtd/partitions.h
++++ b/include/linux/mtd/partitions.h
@@ -36,6 +36,7 @@
* erasesize aligned (e.g. use MTDPART_OFS_NEXTBLK).
*/
struct mtd_partition {
char *name; /* identifier string */
u_int32_t size; /* partition size */
-@@ -43,6 +44,7 @@ struct mtd_partition {
+@@ -43,6 +44,7 @@
u_int32_t mask_flags; /* master MTD flags to mask out for this partition */
struct nand_ecclayout *ecclayout; /* out of band layout for this partition (NAND only)*/
struct mtd_info **mtdp; /* pointer to store the MTD object */
};
#define MTDPART_OFS_NXTBLK (-2)
-@@ -52,6 +54,7 @@ struct mtd_partition {
+@@ -52,6 +54,7 @@
int add_mtd_partitions(struct mtd_info *, const struct mtd_partition *, int);
int del_mtd_partitions(struct mtd_info *);
/*
* Functions dealing with the various ways of partitioning the space
-Index: linux-2.6.23.17/include/mtd/mtd-abi.h
-===================================================================
---- linux-2.6.23.17.orig/include/mtd/mtd-abi.h
-+++ linux-2.6.23.17/include/mtd/mtd-abi.h
-@@ -95,6 +95,7 @@ struct otp_info {
+--- a/include/mtd/mtd-abi.h
++++ b/include/mtd/mtd-abi.h
+@@ -95,6 +95,7 @@
#define ECCGETLAYOUT _IOR('M', 17, struct nand_ecclayout)
#define ECCGETSTATS _IOR('M', 18, struct mtd_ecc_stats)
#define MTDFILEMODE _IO('M', 19)
-Index: linux-2.6.23.17/drivers/mtd/redboot.c
-===================================================================
---- linux-2.6.23.17.orig/drivers/mtd/redboot.c
-+++ linux-2.6.23.17/drivers/mtd/redboot.c
-@@ -236,14 +236,21 @@ static int parse_redboot_partitions(stru
+--- a/drivers/mtd/redboot.c
++++ b/drivers/mtd/redboot.c
+@@ -236,14 +236,21 @@
#endif
names += strlen(names)+1;
-Index: linux-2.6.23.17/net/netfilter/Kconfig
-===================================================================
---- linux-2.6.23.17.orig/net/netfilter/Kconfig
-+++ linux-2.6.23.17/net/netfilter/Kconfig
-@@ -633,6 +633,27 @@ config NETFILTER_XT_MATCH_STATE
+--- a/net/netfilter/Kconfig
++++ b/net/netfilter/Kconfig
+@@ -633,6 +633,27 @@
To compile it as a module, choose M here. If unsure, say N.
config NETFILTER_XT_MATCH_STATISTIC
tristate '"statistic" match support'
depends on NETFILTER_XTABLES
-Index: linux-2.6.23.17/net/netfilter/Makefile
-===================================================================
---- linux-2.6.23.17.orig/net/netfilter/Makefile
-+++ linux-2.6.23.17/net/netfilter/Makefile
-@@ -71,6 +71,7 @@ obj-$(CONFIG_NETFILTER_XT_MATCH_QUOTA) +
+--- a/net/netfilter/Makefile
++++ b/net/netfilter/Makefile
+@@ -71,6 +71,7 @@
obj-$(CONFIG_NETFILTER_XT_MATCH_REALM) += xt_realm.o
obj-$(CONFIG_NETFILTER_XT_MATCH_SCTP) += xt_sctp.o
obj-$(CONFIG_NETFILTER_XT_MATCH_STATE) += xt_state.o
obj-$(CONFIG_NETFILTER_XT_MATCH_STATISTIC) += xt_statistic.o
obj-$(CONFIG_NETFILTER_XT_MATCH_STRING) += xt_string.o
obj-$(CONFIG_NETFILTER_XT_MATCH_TCPMSS) += xt_tcpmss.o
-Index: linux-2.6.23.17/net/netfilter/xt_layer7.c
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/net/netfilter/xt_layer7.c
++++ b/net/netfilter/xt_layer7.c
@@ -0,0 +1,634 @@
+/*
+ Kernel module to match application layer (OSI layer 7) data in connections.
+
+module_init(xt_layer7_init);
+module_exit(xt_layer7_fini);
-Index: linux-2.6.23.17/net/netfilter/regexp/regexp.c
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/net/netfilter/regexp/regexp.c
++++ b/net/netfilter/regexp/regexp.c
@@ -0,0 +1,1197 @@
+/*
+ * regcomp and regexec -- regsub and regerror are elsewhere
+#endif
+
+
-Index: linux-2.6.23.17/net/netfilter/regexp/regexp.h
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/net/netfilter/regexp/regexp.h
++++ b/net/netfilter/regexp/regexp.h
@@ -0,0 +1,41 @@
+/*
+ * Definitions etc. for regexp(3) routines.
+void regerror(char *s);
+
+#endif
-Index: linux-2.6.23.17/net/netfilter/regexp/regmagic.h
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/net/netfilter/regexp/regmagic.h
++++ b/net/netfilter/regexp/regmagic.h
@@ -0,0 +1,5 @@
+/*
+ * The first byte of the regexp internal "program" is actually this magic
+ * number; the start node begins in the second byte.
+ */
+#define MAGIC 0234
-Index: linux-2.6.23.17/net/netfilter/regexp/regsub.c
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/net/netfilter/regexp/regsub.c
++++ b/net/netfilter/regexp/regsub.c
@@ -0,0 +1,95 @@
+/*
+ * regsub
+ }
+ *dst++ = '\0';
+}
-Index: linux-2.6.23.17/net/netfilter/nf_conntrack_core.c
-===================================================================
---- linux-2.6.23.17.orig/net/netfilter/nf_conntrack_core.c
-+++ linux-2.6.23.17/net/netfilter/nf_conntrack_core.c
-@@ -207,6 +207,14 @@ destroy_conntrack(struct nf_conntrack *n
+--- a/net/netfilter/nf_conntrack_core.c
++++ b/net/netfilter/nf_conntrack_core.c
+@@ -207,6 +207,14 @@
* too. */
nf_ct_remove_expectations(ct);
/* We overload first tuple to link into unconfirmed list. */
if (!nf_ct_is_confirmed(ct)) {
BUG_ON(hlist_unhashed(&ct->tuplehash[IP_CT_DIR_ORIGINAL].hnode));
-Index: linux-2.6.23.17/net/netfilter/nf_conntrack_standalone.c
-===================================================================
---- linux-2.6.23.17.orig/net/netfilter/nf_conntrack_standalone.c
-+++ linux-2.6.23.17/net/netfilter/nf_conntrack_standalone.c
-@@ -179,7 +179,12 @@ static int ct_seq_show(struct seq_file *
+--- a/net/netfilter/nf_conntrack_standalone.c
++++ b/net/netfilter/nf_conntrack_standalone.c
+@@ -179,7 +179,12 @@
return -ENOSPC;
#endif
return -ENOSPC;
return 0;
-Index: linux-2.6.23.17/include/net/netfilter/nf_conntrack.h
-===================================================================
---- linux-2.6.23.17.orig/include/net/netfilter/nf_conntrack.h
-+++ linux-2.6.23.17/include/net/netfilter/nf_conntrack.h
-@@ -127,6 +127,22 @@ struct nf_conn
+--- a/include/net/netfilter/nf_conntrack.h
++++ b/include/net/netfilter/nf_conntrack.h
+@@ -127,6 +127,22 @@
u_int32_t secmark;
#endif
/* Storage reserved for other modules: */
union nf_conntrack_proto proto;
-Index: linux-2.6.23.17/include/linux/netfilter/xt_layer7.h
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/include/linux/netfilter/xt_layer7.h
++++ b/include/linux/netfilter/xt_layer7.h
@@ -0,0 +1,13 @@
+#ifndef _XT_LAYER7_H
+#define _XT_LAYER7_H
-Index: linux-2.6.23.17/include/linux/netfilter/xt_layer7.h
-===================================================================
---- linux-2.6.23.17.orig/include/linux/netfilter/xt_layer7.h
-+++ linux-2.6.23.17/include/linux/netfilter/xt_layer7.h
-@@ -8,6 +8,7 @@ struct xt_layer7_info {
+--- a/include/linux/netfilter/xt_layer7.h
++++ b/include/linux/netfilter/xt_layer7.h
+@@ -8,6 +8,7 @@
char protocol[MAX_PROTOCOL_LEN];
char pattern[MAX_PATTERN_LEN];
u_int8_t invert;
};
#endif /* _XT_LAYER7_H */
-Index: linux-2.6.23.17/net/netfilter/xt_layer7.c
-===================================================================
---- linux-2.6.23.17.orig/net/netfilter/xt_layer7.c
-+++ linux-2.6.23.17/net/netfilter/xt_layer7.c
-@@ -297,34 +297,36 @@ static int match_no_append(struct nf_con
+--- a/net/netfilter/xt_layer7.c
++++ b/net/netfilter/xt_layer7.c
+@@ -297,34 +297,36 @@
}
/* add the new app data to the conntrack. Return number of bytes added. */
return length;
}
-@@ -411,7 +413,7 @@ match(const struct sk_buff *skbin,
+@@ -411,7 +413,7 @@
const struct xt_layer7_info * info = matchinfo;
enum ip_conntrack_info master_ctinfo, ctinfo;
struct nf_conn *master_conntrack, *conntrack;
unsigned int pattern_result, appdatalen;
regexp * comppattern;
-@@ -439,8 +441,8 @@ match(const struct sk_buff *skbin,
+@@ -439,8 +441,8 @@
master_conntrack = master_ct(master_conntrack);
/* if we've classified it or seen too many packets */
pattern_result = match_no_append(conntrack, master_conntrack,
ctinfo, master_ctinfo, info);
-@@ -473,6 +475,25 @@ match(const struct sk_buff *skbin,
+@@ -473,6 +475,25 @@
/* the return value gets checked later, when we're ready to use it */
comppattern = compile_and_cache(info->pattern, info->protocol);
-Index: linux-2.6.23.17/include/linux/netfilter_ipv4/ipt_ipp2p.h
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/include/linux/netfilter_ipv4/ipt_ipp2p.h
++++ b/include/linux/netfilter_ipv4/ipt_ipp2p.h
@@ -0,0 +1,31 @@
+#ifndef __IPT_IPP2P_H
+#define __IPT_IPP2P_H
+#define IPP2P_MUTE (1 << 14)
+#define IPP2P_WASTE (1 << 15)
+#define IPP2P_XDCC (1 << 16)
-Index: linux-2.6.23.17/net/ipv4/netfilter/ipt_ipp2p.c
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/net/ipv4/netfilter/ipt_ipp2p.c
++++ b/net/ipv4/netfilter/ipt_ipp2p.c
@@ -0,0 +1,856 @@
+#if defined(MODVERSIONS)
+#include <linux/modversions.h>
+module_exit(fini);
+
+
-Index: linux-2.6.23.17/net/ipv4/netfilter/Kconfig
-===================================================================
---- linux-2.6.23.17.orig/net/ipv4/netfilter/Kconfig
-+++ linux-2.6.23.17/net/ipv4/netfilter/Kconfig
-@@ -63,6 +63,12 @@ config IP_NF_MATCH_IPRANGE
+--- a/net/ipv4/netfilter/Kconfig
++++ b/net/ipv4/netfilter/Kconfig
+@@ -63,6 +63,12 @@
To compile it as a module, choose M here. If unsure, say N.
config IP_NF_MATCH_TOS
tristate "TOS match support"
depends on IP_NF_IPTABLES
-Index: linux-2.6.23.17/net/ipv4/netfilter/Makefile
-===================================================================
---- linux-2.6.23.17.orig/net/ipv4/netfilter/Makefile
-+++ linux-2.6.23.17/net/ipv4/netfilter/Makefile
-@@ -50,6 +50,8 @@ obj-$(CONFIG_IP_NF_MATCH_AH) += ipt_ah.o
+--- a/net/ipv4/netfilter/Makefile
++++ b/net/ipv4/netfilter/Makefile
+@@ -50,6 +50,8 @@
obj-$(CONFIG_IP_NF_MATCH_TTL) += ipt_ttl.o
obj-$(CONFIG_IP_NF_MATCH_ADDRTYPE) += ipt_addrtype.o
-Index: linux-2.6.23.17/include/net/xfrmudp.h
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/include/net/xfrmudp.h
++++ b/include/net/xfrmudp.h
@@ -0,0 +1,10 @@
+/*
+ * pointer to function for type that xfrm4_input wants, to permit
+extern int udp4_register_esp_rcvencap(xfrm4_rcv_encap_t func
+ , xfrm4_rcv_encap_t *oldfunc);
+extern int udp4_unregister_esp_rcvencap(xfrm4_rcv_encap_t func);
-Index: linux-2.6.23.17/net/ipv4/Kconfig
-===================================================================
---- linux-2.6.23.17.orig/net/ipv4/Kconfig
-+++ linux-2.6.23.17/net/ipv4/Kconfig
-@@ -224,6 +224,12 @@ config NET_IPGRE_BROADCAST
+--- a/net/ipv4/Kconfig
++++ b/net/ipv4/Kconfig
+@@ -224,6 +224,12 @@
Network), but can be distributed all over the Internet. If you want
to do that, say Y here and to "IP multicast routing" below.
config IP_MROUTE
bool "IP: multicast routing"
depends on IP_MULTICAST
-Index: linux-2.6.23.17/net/ipv4/xfrm4_input.c
-===================================================================
---- linux-2.6.23.17.orig/net/ipv4/xfrm4_input.c
-+++ linux-2.6.23.17/net/ipv4/xfrm4_input.c
+--- a/net/ipv4/xfrm4_input.c
++++ b/net/ipv4/xfrm4_input.c
@@ -15,6 +15,7 @@
#include <linux/netfilter_ipv4.h>
#include <net/ip.h>
static int xfrm4_parse_spi(struct sk_buff *skb, u8 nexthdr, __be32 *spi, __be32 *seq)
{
-@@ -161,6 +162,29 @@ drop:
+@@ -161,6 +162,29 @@
return 0;
}
/* If it's a keepalive packet, then just eat it.
* If it's an encapsulated packet, then pass it to the
* IPsec xfrm input.
-@@ -251,7 +275,13 @@ int xfrm4_udp_encap_rcv(struct sock *sk,
+@@ -251,7 +275,13 @@
iph->protocol = IPPROTO_ESP;
/* process ESP */
return ret;
drop:
-@@ -265,3 +295,8 @@ int xfrm4_rcv(struct sk_buff *skb)
+@@ -265,3 +295,8 @@
}
EXPORT_SYMBOL(xfrm4_rcv);
-Index: linux-2.6.23.17/include/linux/netfilter_ipv4/ip_set.h
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/include/linux/netfilter_ipv4/ip_set.h
++++ b/include/linux/netfilter_ipv4/ip_set.h
@@ -0,0 +1,498 @@
+#ifndef _IP_SET_H
+#define _IP_SET_H
+#endif /* __KERNEL__ */
+
+#endif /*_IP_SET_H*/
-Index: linux-2.6.23.17/include/linux/netfilter_ipv4/ip_set_iphash.h
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/include/linux/netfilter_ipv4/ip_set_iphash.h
++++ b/include/linux/netfilter_ipv4/ip_set_iphash.h
@@ -0,0 +1,30 @@
+#ifndef __IP_SET_IPHASH_H
+#define __IP_SET_IPHASH_H
+};
+
+#endif /* __IP_SET_IPHASH_H */
-Index: linux-2.6.23.17/include/linux/netfilter_ipv4/ip_set_ipmap.h
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/include/linux/netfilter_ipv4/ip_set_ipmap.h
++++ b/include/linux/netfilter_ipv4/ip_set_ipmap.h
@@ -0,0 +1,56 @@
+#ifndef __IP_SET_IPMAP_H
+#define __IP_SET_IPMAP_H
+}
+
+#endif /* __IP_SET_IPMAP_H */
-Index: linux-2.6.23.17/include/linux/netfilter_ipv4/ip_set_ipporthash.h
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/include/linux/netfilter_ipv4/ip_set_ipporthash.h
++++ b/include/linux/netfilter_ipv4/ip_set_ipporthash.h
@@ -0,0 +1,34 @@
+#ifndef __IP_SET_IPPORTHASH_H
+#define __IP_SET_IPPORTHASH_H
+};
+
+#endif /* __IP_SET_IPPORTHASH_H */
-Index: linux-2.6.23.17/include/linux/netfilter_ipv4/ip_set_iptree.h
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/include/linux/netfilter_ipv4/ip_set_iptree.h
++++ b/include/linux/netfilter_ipv4/ip_set_iptree.h
@@ -0,0 +1,40 @@
+#ifndef __IP_SET_IPTREE_H
+#define __IP_SET_IPTREE_H
+};
+
+#endif /* __IP_SET_IPTREE_H */
-Index: linux-2.6.23.17/include/linux/netfilter_ipv4/ip_set_iptreemap.h
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/include/linux/netfilter_ipv4/ip_set_iptreemap.h
++++ b/include/linux/netfilter_ipv4/ip_set_iptreemap.h
@@ -0,0 +1,40 @@
+#ifndef __IP_SET_IPTREEMAP_H
+#define __IP_SET_IPTREEMAP_H
+};
+
+#endif /* __IP_SET_IPTREEMAP_H */
-Index: linux-2.6.23.17/include/linux/netfilter_ipv4/ip_set_jhash.h
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/include/linux/netfilter_ipv4/ip_set_jhash.h
++++ b/include/linux/netfilter_ipv4/ip_set_jhash.h
@@ -0,0 +1,148 @@
+#ifndef _LINUX_IPSET_JHASH_H
+#define _LINUX_IPSET_JHASH_H
+}
+
+#endif /* _LINUX_IPSET_JHASH_H */
-Index: linux-2.6.23.17/include/linux/netfilter_ipv4/ip_set_macipmap.h
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/include/linux/netfilter_ipv4/ip_set_macipmap.h
++++ b/include/linux/netfilter_ipv4/ip_set_macipmap.h
@@ -0,0 +1,38 @@
+#ifndef __IP_SET_MACIPMAP_H
+#define __IP_SET_MACIPMAP_H
+};
+
+#endif /* __IP_SET_MACIPMAP_H */
-Index: linux-2.6.23.17/include/linux/netfilter_ipv4/ip_set_malloc.h
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/include/linux/netfilter_ipv4/ip_set_malloc.h
++++ b/include/linux/netfilter_ipv4/ip_set_malloc.h
@@ -0,0 +1,116 @@
+#ifndef _IP_SET_MALLOC_H
+#define _IP_SET_MALLOC_H
+#endif /* __KERNEL__ */
+
+#endif /*_IP_SET_MALLOC_H*/
-Index: linux-2.6.23.17/include/linux/netfilter_ipv4/ip_set_nethash.h
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/include/linux/netfilter_ipv4/ip_set_nethash.h
++++ b/include/linux/netfilter_ipv4/ip_set_nethash.h
@@ -0,0 +1,55 @@
+#ifndef __IP_SET_NETHASH_H
+#define __IP_SET_NETHASH_H
+}
+
+#endif /* __IP_SET_NETHASH_H */
-Index: linux-2.6.23.17/include/linux/netfilter_ipv4/ip_set_portmap.h
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/include/linux/netfilter_ipv4/ip_set_portmap.h
++++ b/include/linux/netfilter_ipv4/ip_set_portmap.h
@@ -0,0 +1,25 @@
+#ifndef __IP_SET_PORTMAP_H
+#define __IP_SET_PORTMAP_H
+};
+
+#endif /* __IP_SET_PORTMAP_H */
-Index: linux-2.6.23.17/include/linux/netfilter_ipv4/ipt_set.h
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/include/linux/netfilter_ipv4/ipt_set.h
++++ b/include/linux/netfilter_ipv4/ipt_set.h
@@ -0,0 +1,21 @@
+#ifndef _IPT_SET_H
+#define _IPT_SET_H
+};
+
+#endif /*_IPT_SET_H*/
-Index: linux-2.6.23.17/net/ipv4/netfilter/ip_set.c
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/net/ipv4/netfilter/ip_set.c
++++ b/net/ipv4/netfilter/ip_set.c
@@ -0,0 +1,2003 @@
+/* Copyright (C) 2000-2002 Joakim Axelsson <gozem@linux.nu>
+ * Patrick Schaaf <bof@bof.de>
+
+module_init(ip_set_init);
+module_exit(ip_set_fini);
-Index: linux-2.6.23.17/net/ipv4/netfilter/ip_set_iphash.c
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/net/ipv4/netfilter/ip_set_iphash.c
++++ b/net/ipv4/netfilter/ip_set_iphash.c
@@ -0,0 +1,429 @@
+/* Copyright (C) 2003-2004 Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
+ *
+
+module_init(ip_set_iphash_init);
+module_exit(ip_set_iphash_fini);
-Index: linux-2.6.23.17/net/ipv4/netfilter/ip_set_ipmap.c
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/net/ipv4/netfilter/ip_set_ipmap.c
++++ b/net/ipv4/netfilter/ip_set_ipmap.c
@@ -0,0 +1,336 @@
+/* Copyright (C) 2000-2002 Joakim Axelsson <gozem@linux.nu>
+ * Patrick Schaaf <bof@bof.de>
+
+module_init(ip_set_ipmap_init);
+module_exit(ip_set_ipmap_fini);
-Index: linux-2.6.23.17/net/ipv4/netfilter/ip_set_ipporthash.c
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/net/ipv4/netfilter/ip_set_ipporthash.c
++++ b/net/ipv4/netfilter/ip_set_ipporthash.c
@@ -0,0 +1,581 @@
+/* Copyright (C) 2003-2004 Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
+ *
+
+module_init(ip_set_ipporthash_init);
+module_exit(ip_set_ipporthash_fini);
-Index: linux-2.6.23.17/net/ipv4/netfilter/ip_set_iptree.c
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/net/ipv4/netfilter/ip_set_iptree.c
++++ b/net/ipv4/netfilter/ip_set_iptree.c
@@ -0,0 +1,612 @@
+/* Copyright (C) 2005 Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
+ *
+
+module_init(ip_set_iptree_init);
+module_exit(ip_set_iptree_fini);
-Index: linux-2.6.23.17/net/ipv4/netfilter/ip_set_iptreemap.c
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/net/ipv4/netfilter/ip_set_iptreemap.c
++++ b/net/ipv4/netfilter/ip_set_iptreemap.c
@@ -0,0 +1,829 @@
+/* Copyright (C) 2007 Sven Wegener <sven.wegener@stealer.net>
+ *
+
+module_init(ip_set_iptreemap_init);
+module_exit(ip_set_iptreemap_fini);
-Index: linux-2.6.23.17/net/ipv4/netfilter/ip_set_macipmap.c
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/net/ipv4/netfilter/ip_set_macipmap.c
++++ b/net/ipv4/netfilter/ip_set_macipmap.c
@@ -0,0 +1,375 @@
+/* Copyright (C) 2000-2002 Joakim Axelsson <gozem@linux.nu>
+ * Patrick Schaaf <bof@bof.de>
+
+module_init(ip_set_macipmap_init);
+module_exit(ip_set_macipmap_fini);
-Index: linux-2.6.23.17/net/ipv4/netfilter/ip_set_nethash.c
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/net/ipv4/netfilter/ip_set_nethash.c
++++ b/net/ipv4/netfilter/ip_set_nethash.c
@@ -0,0 +1,497 @@
+/* Copyright (C) 2003-2004 Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
+ *
+
+module_init(ip_set_nethash_init);
+module_exit(ip_set_nethash_fini);
-Index: linux-2.6.23.17/net/ipv4/netfilter/ip_set_portmap.c
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/net/ipv4/netfilter/ip_set_portmap.c
++++ b/net/ipv4/netfilter/ip_set_portmap.c
@@ -0,0 +1,346 @@
+/* Copyright (C) 2003-2004 Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
+ *
+
+module_init(ip_set_portmap_init);
+module_exit(ip_set_portmap_fini);
-Index: linux-2.6.23.17/net/ipv4/netfilter/ipt_set.c
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/net/ipv4/netfilter/ipt_set.c
++++ b/net/ipv4/netfilter/ipt_set.c
@@ -0,0 +1,160 @@
+/* Copyright (C) 2000-2002 Joakim Axelsson <gozem@linux.nu>
+ * Patrick Schaaf <bof@bof.de>
+
+module_init(ipt_ipset_init);
+module_exit(ipt_ipset_fini);
-Index: linux-2.6.23.17/net/ipv4/netfilter/ipt_SET.c
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/net/ipv4/netfilter/ipt_SET.c
++++ b/net/ipv4/netfilter/ipt_SET.c
@@ -0,0 +1,172 @@
+/* Copyright (C) 2000-2002 Joakim Axelsson <gozem@linux.nu>
+ * Patrick Schaaf <bof@bof.de>
+
+module_init(ipt_SET_init);
+module_exit(ipt_SET_fini);
-Index: linux-2.6.23.17/net/ipv4/netfilter/Kconfig
-===================================================================
---- linux-2.6.23.17.orig/net/ipv4/netfilter/Kconfig
-+++ linux-2.6.23.17/net/ipv4/netfilter/Kconfig
-@@ -408,5 +408,122 @@ config IP_NF_ARP_MANGLE
+--- a/net/ipv4/netfilter/Kconfig
++++ b/net/ipv4/netfilter/Kconfig
+@@ -408,5 +408,122 @@
Allows altering the ARP packet payload: source and destination
hardware and network addresses.
+
endmenu
-Index: linux-2.6.23.17/net/ipv4/netfilter/Makefile
-===================================================================
---- linux-2.6.23.17.orig/net/ipv4/netfilter/Makefile
-+++ linux-2.6.23.17/net/ipv4/netfilter/Makefile
-@@ -48,6 +48,7 @@ obj-$(CONFIG_IP_NF_MATCH_RECENT) += ipt_
+--- a/net/ipv4/netfilter/Makefile
++++ b/net/ipv4/netfilter/Makefile
+@@ -48,6 +48,7 @@
obj-$(CONFIG_IP_NF_MATCH_ECN) += ipt_ecn.o
obj-$(CONFIG_IP_NF_MATCH_AH) += ipt_ah.o
obj-$(CONFIG_IP_NF_MATCH_TTL) += ipt_ttl.o
obj-$(CONFIG_IP_NF_MATCH_ADDRTYPE) += ipt_addrtype.o
obj-$(CONFIG_IP_NF_MATCH_IPP2P) += ipt_ipp2p.o
-@@ -64,6 +65,18 @@ obj-$(CONFIG_IP_NF_TARGET_LOG) += ipt_LO
+@@ -64,6 +65,18 @@
obj-$(CONFIG_IP_NF_TARGET_ULOG) += ipt_ULOG.o
obj-$(CONFIG_IP_NF_TARGET_CLUSTERIP) += ipt_CLUSTERIP.o
obj-$(CONFIG_IP_NF_TARGET_TTL) += ipt_TTL.o
-Index: linux-2.6.23.17/include/linux/netfilter_ipv4/ipt_time.h
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/include/linux/netfilter_ipv4/ipt_time.h
++++ b/include/linux/netfilter_ipv4/ipt_time.h
@@ -0,0 +1,18 @@
+#ifndef __ipt_time_h_included__
+#define __ipt_time_h_included__
+
+
+#endif /* __ipt_time_h_included__ */
-Index: linux-2.6.23.17/net/ipv4/netfilter/ipt_time.c
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/net/ipv4/netfilter/ipt_time.c
++++ b/net/ipv4/netfilter/ipt_time.c
@@ -0,0 +1,180 @@
+/*
+ This is a module which is used for time matching
+ r->tm_mon=i;
+ r->tm_mday=work-__spm[i]+1;
+}
-Index: linux-2.6.23.17/net/ipv4/netfilter/Kconfig
-===================================================================
---- linux-2.6.23.17.orig/net/ipv4/netfilter/Kconfig
-+++ linux-2.6.23.17/net/ipv4/netfilter/Kconfig
-@@ -78,6 +78,22 @@ config IP_NF_MATCH_TOS
+--- a/net/ipv4/netfilter/Kconfig
++++ b/net/ipv4/netfilter/Kconfig
+@@ -78,6 +78,22 @@
To compile it as a module, choose M here. If unsure, say N.
config IP_NF_MATCH_RECENT
tristate "recent match support"
depends on IP_NF_IPTABLES
-Index: linux-2.6.23.17/net/ipv4/netfilter/Makefile
-===================================================================
---- linux-2.6.23.17.orig/net/ipv4/netfilter/Makefile
-+++ linux-2.6.23.17/net/ipv4/netfilter/Makefile
-@@ -44,6 +44,7 @@ obj-$(CONFIG_IP_NF_RAW) += iptable_raw.o
+--- a/net/ipv4/netfilter/Makefile
++++ b/net/ipv4/netfilter/Makefile
+@@ -44,6 +44,7 @@
obj-$(CONFIG_IP_NF_MATCH_IPRANGE) += ipt_iprange.o
obj-$(CONFIG_IP_NF_MATCH_OWNER) += ipt_owner.o
obj-$(CONFIG_IP_NF_MATCH_TOS) += ipt_tos.o
-Index: linux-2.6.23.17/drivers/net/imq.c
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/drivers/net/imq.c
++++ b/drivers/net/imq.c
@@ -0,0 +1,400 @@
+/*
+ * Pseudo-driver for the intermediate queue device.
+MODULE_AUTHOR("http://www.linuximq.net");
+MODULE_DESCRIPTION("Pseudo-driver for the intermediate queue device. See http://www.linuximq.net/ for more information.");
+MODULE_LICENSE("GPL");
-Index: linux-2.6.23.17/drivers/net/Kconfig
-===================================================================
---- linux-2.6.23.17.orig/drivers/net/Kconfig
-+++ linux-2.6.23.17/drivers/net/Kconfig
-@@ -112,6 +112,129 @@ config EQUALIZER
+--- a/drivers/net/Kconfig
++++ b/drivers/net/Kconfig
+@@ -112,6 +112,129 @@
To compile this driver as a module, choose M here: the module
will be called eql. If unsure, say N.
config TUN
tristate "Universal TUN/TAP device driver support"
select CRC32
-Index: linux-2.6.23.17/drivers/net/Makefile
-===================================================================
---- linux-2.6.23.17.orig/drivers/net/Makefile
-+++ linux-2.6.23.17/drivers/net/Makefile
-@@ -131,6 +131,7 @@ obj-$(CONFIG_SLHC) += slhc.o
+--- a/drivers/net/Makefile
++++ b/drivers/net/Makefile
+@@ -131,6 +131,7 @@
obj-$(CONFIG_XEN_NETDEV_FRONTEND) += xen-netfront.o
obj-$(CONFIG_DUMMY) += dummy.o
obj-$(CONFIG_IFB) += ifb.o
obj-$(CONFIG_MACVLAN) += macvlan.o
obj-$(CONFIG_DE600) += de600.o
-Index: linux-2.6.23.17/include/linux/imq.h
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/include/linux/imq.h
++++ b/include/linux/imq.h
@@ -0,0 +1,9 @@
+#ifndef _IMQ_H
+#define _IMQ_H
+#define IMQ_F_ENQUEUE 0x80
+
+#endif /* _IMQ_H */
-Index: linux-2.6.23.17/include/linux/netfilter_ipv4/ipt_IMQ.h
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/include/linux/netfilter_ipv4/ipt_IMQ.h
++++ b/include/linux/netfilter_ipv4/ipt_IMQ.h
@@ -0,0 +1,8 @@
+#ifndef _IPT_IMQ_H
+#define _IPT_IMQ_H
+};
+
+#endif /* _IPT_IMQ_H */
-Index: linux-2.6.23.17/include/linux/netfilter_ipv6/ip6t_IMQ.h
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/include/linux/netfilter_ipv6/ip6t_IMQ.h
++++ b/include/linux/netfilter_ipv6/ip6t_IMQ.h
@@ -0,0 +1,8 @@
+#ifndef _IP6T_IMQ_H
+#define _IP6T_IMQ_H
+};
+
+#endif /* _IP6T_IMQ_H */
-Index: linux-2.6.23.17/include/linux/skbuff.h
-===================================================================
---- linux-2.6.23.17.orig/include/linux/skbuff.h
-+++ linux-2.6.23.17/include/linux/skbuff.h
-@@ -295,6 +295,10 @@ struct sk_buff {
+--- a/include/linux/skbuff.h
++++ b/include/linux/skbuff.h
+@@ -295,6 +295,10 @@
struct nf_conntrack *nfct;
struct sk_buff *nfct_reasm;
#endif
#ifdef CONFIG_BRIDGE_NETFILTER
struct nf_bridge_info *nf_bridge;
#endif
-@@ -1725,6 +1729,10 @@ static inline void __nf_copy(struct sk_b
+@@ -1725,6 +1729,10 @@
dst->nfct_reasm = src->nfct_reasm;
nf_conntrack_get_reasm(src->nfct_reasm);
#endif
#ifdef CONFIG_BRIDGE_NETFILTER
dst->nf_bridge = src->nf_bridge;
nf_bridge_get(src->nf_bridge);
-Index: linux-2.6.23.17/net/core/dev.c
-===================================================================
---- linux-2.6.23.17.orig/net/core/dev.c
-+++ linux-2.6.23.17/net/core/dev.c
+--- a/net/core/dev.c
++++ b/net/core/dev.c
@@ -94,6 +94,9 @@
#include <linux/skbuff.h>
#include <net/sock.h>
#include <linux/proc_fs.h>
#include <linux/seq_file.h>
#include <linux/stat.h>
-@@ -1462,7 +1465,11 @@ static int dev_gso_segment(struct sk_buf
+@@ -1462,7 +1465,11 @@
int dev_hard_start_xmit(struct sk_buff *skb, struct net_device *dev)
{
if (likely(!skb->next)) {
dev_queue_xmit_nit(skb, dev);
if (netif_needs_gso(dev, skb)) {
-Index: linux-2.6.23.17/net/ipv4/netfilter/ipt_IMQ.c
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/net/ipv4/netfilter/ipt_IMQ.c
++++ b/net/ipv4/netfilter/ipt_IMQ.c
@@ -0,0 +1,69 @@
+/*
+ * This target marks packets to be enqueued to an imq device
+MODULE_AUTHOR("http://www.linuximq.net");
+MODULE_DESCRIPTION("Pseudo-driver for the intermediate queue device. See http://www.linuximq.net/ for more information.");
+MODULE_LICENSE("GPL");
-Index: linux-2.6.23.17/net/ipv4/netfilter/Kconfig
-===================================================================
---- linux-2.6.23.17.orig/net/ipv4/netfilter/Kconfig
-+++ linux-2.6.23.17/net/ipv4/netfilter/Kconfig
-@@ -333,6 +333,17 @@ config IP_NF_MANGLE
+--- a/net/ipv4/netfilter/Kconfig
++++ b/net/ipv4/netfilter/Kconfig
+@@ -333,6 +333,17 @@
To compile it as a module, choose M here. If unsure, say N.
config IP_NF_TARGET_TOS
tristate "TOS target support"
depends on IP_NF_MANGLE
-Index: linux-2.6.23.17/net/ipv4/netfilter/Makefile
-===================================================================
---- linux-2.6.23.17.orig/net/ipv4/netfilter/Makefile
-+++ linux-2.6.23.17/net/ipv4/netfilter/Makefile
-@@ -58,6 +58,7 @@ obj-$(CONFIG_IP_NF_MATCH_IPP2P) += ipt_i
+--- a/net/ipv4/netfilter/Makefile
++++ b/net/ipv4/netfilter/Makefile
+@@ -58,6 +58,7 @@
obj-$(CONFIG_IP_NF_TARGET_REJECT) += ipt_REJECT.o
obj-$(CONFIG_IP_NF_TARGET_TOS) += ipt_TOS.o
obj-$(CONFIG_IP_NF_TARGET_ECN) += ipt_ECN.o
obj-$(CONFIG_IP_NF_TARGET_MASQUERADE) += ipt_MASQUERADE.o
obj-$(CONFIG_IP_NF_TARGET_REDIRECT) += ipt_REDIRECT.o
obj-$(CONFIG_IP_NF_TARGET_NETMAP) += ipt_NETMAP.o
-Index: linux-2.6.23.17/net/ipv6/netfilter/ip6t_IMQ.c
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/net/ipv6/netfilter/ip6t_IMQ.c
++++ b/net/ipv6/netfilter/ip6t_IMQ.c
@@ -0,0 +1,69 @@
+/*
+ * This target marks packets to be enqueued to an imq device
+MODULE_AUTHOR("http://www.linuximq.net");
+MODULE_DESCRIPTION("Pseudo-driver for the intermediate queue device. See http://www.linuximq.net/ for more information.");
+MODULE_LICENSE("GPL");
-Index: linux-2.6.23.17/net/ipv6/netfilter/Kconfig
-===================================================================
---- linux-2.6.23.17.orig/net/ipv6/netfilter/Kconfig
-+++ linux-2.6.23.17/net/ipv6/netfilter/Kconfig
-@@ -173,6 +173,15 @@ config IP6_NF_MANGLE
+--- a/net/ipv6/netfilter/Kconfig
++++ b/net/ipv6/netfilter/Kconfig
+@@ -173,6 +173,15 @@
To compile it as a module, choose M here. If unsure, say N.
config IP6_NF_TARGET_HL
tristate 'HL (hoplimit) target support'
depends on IP6_NF_MANGLE
-Index: linux-2.6.23.17/net/ipv6/netfilter/Makefile
-===================================================================
---- linux-2.6.23.17.orig/net/ipv6/netfilter/Makefile
-+++ linux-2.6.23.17/net/ipv6/netfilter/Makefile
-@@ -13,6 +13,7 @@ obj-$(CONFIG_IP6_NF_MATCH_EUI64) += ip6t
+--- a/net/ipv6/netfilter/Makefile
++++ b/net/ipv6/netfilter/Makefile
+@@ -13,6 +13,7 @@
obj-$(CONFIG_IP6_NF_MATCH_OWNER) += ip6t_owner.o
obj-$(CONFIG_IP6_NF_FILTER) += ip6table_filter.o
obj-$(CONFIG_IP6_NF_MANGLE) += ip6table_mangle.o
obj-$(CONFIG_IP6_NF_TARGET_HL) += ip6t_HL.o
obj-$(CONFIG_IP6_NF_QUEUE) += ip6_queue.o
obj-$(CONFIG_IP6_NF_TARGET_LOG) += ip6t_LOG.o
-Index: linux-2.6.23.17/net/sched/sch_generic.c
-===================================================================
---- linux-2.6.23.17.orig/net/sched/sch_generic.c
-+++ linux-2.6.23.17/net/sched/sch_generic.c
-@@ -191,6 +191,11 @@ static inline int qdisc_restart(struct n
+--- a/net/sched/sch_generic.c
++++ b/net/sched/sch_generic.c
+@@ -191,6 +191,11 @@
return ret;
}
void __qdisc_run(struct net_device *dev)
{
do {
-@@ -620,3 +625,4 @@ EXPORT_SYMBOL(qdisc_destroy);
+@@ -620,3 +625,4 @@
EXPORT_SYMBOL(qdisc_reset);
EXPORT_SYMBOL(qdisc_lock_tree);
EXPORT_SYMBOL(qdisc_unlock_tree);
-Index: linux-2.6.23.17/include/linux/netfilter_ipv4/ipt_ROUTE.h
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/include/linux/netfilter_ipv4/ipt_ROUTE.h
++++ b/include/linux/netfilter_ipv4/ipt_ROUTE.h
@@ -0,0 +1,23 @@
+/* Header file for iptables ipt_ROUTE target
+ *
+#define IPT_ROUTE_TEE 0x02
+
+#endif /*_IPT_ROUTE_H_target*/
-Index: linux-2.6.23.17/include/linux/netfilter_ipv6/ip6t_ROUTE.h
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/include/linux/netfilter_ipv6/ip6t_ROUTE.h
++++ b/include/linux/netfilter_ipv6/ip6t_ROUTE.h
@@ -0,0 +1,23 @@
+/* Header file for iptables ip6t_ROUTE target
+ *
+#define IP6T_ROUTE_TEE 0x02
+
+#endif /*_IP6T_ROUTE_H_target*/
-Index: linux-2.6.23.17/net/ipv4/netfilter/ipt_ROUTE.c
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/net/ipv4/netfilter/ipt_ROUTE.c
++++ b/net/ipv4/netfilter/ipt_ROUTE.c
@@ -0,0 +1,463 @@
+/*
+ * This implements the ROUTE target, which enables you to setup unusual
+
+module_init(init);
+module_exit(fini);
-Index: linux-2.6.23.17/net/ipv4/netfilter/Kconfig
-===================================================================
---- linux-2.6.23.17.orig/net/ipv4/netfilter/Kconfig
-+++ linux-2.6.23.17/net/ipv4/netfilter/Kconfig
-@@ -552,5 +552,22 @@ config IP_NF_TARGET_SET
+--- a/net/ipv4/netfilter/Kconfig
++++ b/net/ipv4/netfilter/Kconfig
+@@ -552,5 +552,22 @@
To compile it as a module, choose M here. If unsure, say N.
+
endmenu
-Index: linux-2.6.23.17/net/ipv4/netfilter/Makefile
-===================================================================
---- linux-2.6.23.17.orig/net/ipv4/netfilter/Makefile
-+++ linux-2.6.23.17/net/ipv4/netfilter/Makefile
-@@ -61,6 +61,7 @@ obj-$(CONFIG_IP_NF_TARGET_ECN) += ipt_EC
+--- a/net/ipv4/netfilter/Makefile
++++ b/net/ipv4/netfilter/Makefile
+@@ -61,6 +61,7 @@
obj-$(CONFIG_IP_NF_TARGET_IMQ) += ipt_IMQ.o
obj-$(CONFIG_IP_NF_TARGET_MASQUERADE) += ipt_MASQUERADE.o
obj-$(CONFIG_IP_NF_TARGET_REDIRECT) += ipt_REDIRECT.o
obj-$(CONFIG_IP_NF_TARGET_NETMAP) += ipt_NETMAP.o
obj-$(CONFIG_IP_NF_TARGET_SAME) += ipt_SAME.o
obj-$(CONFIG_IP_NF_TARGET_LOG) += ipt_LOG.o
-Index: linux-2.6.23.17/net/ipv6/ndisc.c
-===================================================================
---- linux-2.6.23.17.orig/net/ipv6/ndisc.c
-+++ linux-2.6.23.17/net/ipv6/ndisc.c
-@@ -154,6 +154,8 @@ struct neigh_table nd_tbl = {
+--- a/net/ipv6/ndisc.c
++++ b/net/ipv6/ndisc.c
+@@ -154,6 +154,8 @@
.gc_thresh3 = 1024,
};
/* ND options */
struct ndisc_options {
struct nd_opt_hdr *nd_opt_array[__ND_OPT_ARRAY_MAX];
-Index: linux-2.6.23.17/net/ipv6/netfilter/ip6t_ROUTE.c
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/net/ipv6/netfilter/ip6t_ROUTE.c
++++ b/net/ipv6/netfilter/ip6t_ROUTE.c
@@ -0,0 +1,330 @@
+/*
+ * This implements the ROUTE v6 target, which enables you to setup unusual
+module_init(init);
+module_exit(fini);
+MODULE_LICENSE("GPL");
-Index: linux-2.6.23.17/net/ipv6/netfilter/Kconfig
-===================================================================
---- linux-2.6.23.17.orig/net/ipv6/netfilter/Kconfig
-+++ linux-2.6.23.17/net/ipv6/netfilter/Kconfig
-@@ -209,5 +209,18 @@ config IP6_NF_RAW
+--- a/net/ipv6/netfilter/Kconfig
++++ b/net/ipv6/netfilter/Kconfig
+@@ -209,5 +209,18 @@
If you want to compile it as a module, say M here and read
<file:Documentation/kbuild/modules.txt>. If unsure, say `N'.
+
endmenu
-Index: linux-2.6.23.17/net/ipv6/netfilter/Makefile
-===================================================================
---- linux-2.6.23.17.orig/net/ipv6/netfilter/Makefile
-+++ linux-2.6.23.17/net/ipv6/netfilter/Makefile
-@@ -20,6 +20,7 @@ obj-$(CONFIG_IP6_NF_TARGET_LOG) += ip6t_
+--- a/net/ipv6/netfilter/Makefile
++++ b/net/ipv6/netfilter/Makefile
+@@ -20,6 +20,7 @@
obj-$(CONFIG_IP6_NF_RAW) += ip6table_raw.o
obj-$(CONFIG_IP6_NF_MATCH_HL) += ip6t_hl.o
obj-$(CONFIG_IP6_NF_TARGET_REJECT) += ip6t_REJECT.o
-Index: linux-2.6.23.17/include/linux/netfilter/oot_conntrack.h
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/include/linux/netfilter/oot_conntrack.h
++++ b/include/linux/netfilter/oot_conntrack.h
@@ -0,0 +1,5 @@
+#if defined(CONFIG_IP_NF_CONNTRACK) || defined(CONFIG_IP_NF_CONNTRACK_MODULE)
+# include <linux/netfilter_ipv4/ip_conntrack.h>
+#else /* linux-2.6.20+ */
+# include <net/netfilter/nf_nat_rule.h>
+#endif
-Index: linux-2.6.23.17/include/linux/netfilter/oot_trans.h
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/include/linux/netfilter/oot_trans.h
++++ b/include/linux/netfilter/oot_trans.h
@@ -0,0 +1,14 @@
+/* Out of tree workarounds */
+#include <linux/version.h>
+# define tcp_v4_check(tcph, tcph_sz, s, d, csp) \
+ tcp_v4_check((tcph_sz), (s), (d), (csp))
+#endif
-Index: linux-2.6.23.17/include/linux/netfilter/xt_CHAOS.h
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/include/linux/netfilter/xt_CHAOS.h
++++ b/include/linux/netfilter/xt_CHAOS.h
@@ -0,0 +1,14 @@
+#ifndef _LINUX_NETFILTER_XT_CHAOS_H
+#define _LINUX_NETFILTER_XT_CHAOS_H 1
+};
+
+#endif /* _LINUX_NETFILTER_XT_CHAOS_H */
-Index: linux-2.6.23.17/include/linux/netfilter/xt_portscan.h
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/include/linux/netfilter/xt_portscan.h
++++ b/include/linux/netfilter/xt_portscan.h
@@ -0,0 +1,8 @@
+#ifndef _LINUX_NETFILTER_XT_PORTSCAN_H
+#define _LINUX_NETFILTER_XT_PORTSCAN_H 1
+};
+
+#endif /* _LINUX_NETFILTER_XT_PORTSCAN_H */
-Index: linux-2.6.23.17/net/netfilter/find_match.c
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/net/netfilter/find_match.c
++++ b/net/netfilter/find_match.c
@@ -0,0 +1,39 @@
+/*
+ xt_request_find_match
+
+/* In case it goes into mainline, let this out-of-tree package compile */
+#define xt_request_find_match xt_request_find_match_lo
-Index: linux-2.6.23.17/net/netfilter/Kconfig
-===================================================================
---- linux-2.6.23.17.orig/net/netfilter/Kconfig
-+++ linux-2.6.23.17/net/netfilter/Kconfig
-@@ -265,6 +265,14 @@ config NETFILTER_XTABLES
+--- a/net/netfilter/Kconfig
++++ b/net/netfilter/Kconfig
+@@ -265,6 +265,14 @@
# alphabetically ordered list of targets
config NETFILTER_XT_TARGET_CLASSIFY
tristate '"CLASSIFY" target support'
depends on NETFILTER_XTABLES
-@@ -292,6 +300,14 @@ config NETFILTER_XT_TARGET_CONNMARK
+@@ -292,6 +300,14 @@
<file:Documentation/kbuild/modules.txt>. The module will be called
ipt_CONNMARK.ko. If unsure, say `N'.
config NETFILTER_XT_TARGET_DSCP
tristate '"DSCP" target support'
depends on NETFILTER_XTABLES
-@@ -556,6 +572,14 @@ config NETFILTER_XT_MATCH_POLICY
+@@ -556,6 +572,14 @@
To compile it as a module, choose M here. If unsure, say N.
config NETFILTER_XT_MATCH_MULTIPORT
tristate "Multiple port match support"
depends on NETFILTER_XTABLES
-Index: linux-2.6.23.17/net/netfilter/Makefile
-===================================================================
---- linux-2.6.23.17.orig/net/netfilter/Makefile
-+++ linux-2.6.23.17/net/netfilter/Makefile
-@@ -49,6 +49,8 @@ obj-$(CONFIG_NETFILTER_XT_TARGET_TRACE)
+--- a/net/netfilter/Makefile
++++ b/net/netfilter/Makefile
+@@ -49,6 +49,8 @@
obj-$(CONFIG_NETFILTER_XT_TARGET_SECMARK) += xt_SECMARK.o
obj-$(CONFIG_NETFILTER_XT_TARGET_TCPMSS) += xt_TCPMSS.o
obj-$(CONFIG_NETFILTER_XT_TARGET_CONNSECMARK) += xt_CONNSECMARK.o
# matches
obj-$(CONFIG_NETFILTER_XT_MATCH_COMMENT) += xt_comment.o
-@@ -78,3 +80,4 @@ obj-$(CONFIG_NETFILTER_XT_MATCH_TCPMSS)
+@@ -78,3 +80,4 @@
obj-$(CONFIG_NETFILTER_XT_MATCH_PHYSDEV) += xt_physdev.o
obj-$(CONFIG_NETFILTER_XT_MATCH_U32) += xt_u32.o
obj-$(CONFIG_NETFILTER_XT_MATCH_HASHLIMIT) += xt_hashlimit.o
+obj-$(CONFIG_NETFILTER_XT_MATCH_PORTSCAN) += xt_portscan.o
-Index: linux-2.6.23.17/net/netfilter/xt_CHAOS.c
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/net/netfilter/xt_CHAOS.c
++++ b/net/netfilter/xt_CHAOS.c
@@ -0,0 +1,200 @@
+/*
+ * CHAOS target for netfilter
+MODULE_DESCRIPTION("netfilter \"CHAOS\" target");
+MODULE_LICENSE("GPL");
+MODULE_ALIAS("ipt_CHAOS");
-Index: linux-2.6.23.17/net/netfilter/xt_DELUDE.c
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/net/netfilter/xt_DELUDE.c
++++ b/net/netfilter/xt_DELUDE.c
@@ -0,0 +1,197 @@
+/*
+ * DELUDE target
+MODULE_DESCRIPTION("netfilter \"DELUDE\" target");
+MODULE_LICENSE("GPL");
+MODULE_ALIAS("ipt_DELUDE");
-Index: linux-2.6.23.17/net/netfilter/xt_portscan.c
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/net/netfilter/xt_portscan.c
++++ b/net/netfilter/xt_portscan.c
@@ -0,0 +1,269 @@
+/*
+ * portscan match for netfilter
+MODULE_DESCRIPTION("netfilter \"portscan\" match");
+MODULE_LICENSE("GPL");
+MODULE_ALIAS("ipt_portscan");
-Index: linux-2.6.23.17/drivers/char/random.c
-===================================================================
---- linux-2.6.23.17.orig/drivers/char/random.c
-+++ linux-2.6.23.17/drivers/char/random.c
-@@ -1564,6 +1564,8 @@ __u32 secure_tcp_sequence_number(__be32
+--- a/drivers/char/random.c
++++ b/drivers/char/random.c
+@@ -1564,6 +1564,8 @@
return seq;
}
-Index: linux-2.6.23.17/net/netfilter/Kconfig
-===================================================================
---- linux-2.6.23.17.orig/net/netfilter/Kconfig
-+++ linux-2.6.23.17/net/netfilter/Kconfig
-@@ -401,6 +401,23 @@ config NETFILTER_XT_TARGET_CONNSECMARK
+--- a/net/netfilter/Kconfig
++++ b/net/netfilter/Kconfig
+@@ -401,6 +401,23 @@
To compile it as a module, choose M here. If unsure, say N.
config NETFILTER_XT_TARGET_TCPMSS
tristate '"TCPMSS" target support'
depends on NETFILTER_XTABLES && (IPV6 || IPV6=n)
-Index: linux-2.6.23.17/net/netfilter/Makefile
-===================================================================
---- linux-2.6.23.17.orig/net/netfilter/Makefile
-+++ linux-2.6.23.17/net/netfilter/Makefile
-@@ -47,6 +47,7 @@ obj-$(CONFIG_NETFILTER_XT_TARGET_NFLOG)
+--- a/net/netfilter/Makefile
++++ b/net/netfilter/Makefile
+@@ -47,6 +47,7 @@
obj-$(CONFIG_NETFILTER_XT_TARGET_NOTRACK) += xt_NOTRACK.o
obj-$(CONFIG_NETFILTER_XT_TARGET_TRACE) += xt_TRACE.o
obj-$(CONFIG_NETFILTER_XT_TARGET_SECMARK) += xt_SECMARK.o
obj-$(CONFIG_NETFILTER_XT_TARGET_TCPMSS) += xt_TCPMSS.o
obj-$(CONFIG_NETFILTER_XT_TARGET_CONNSECMARK) += xt_CONNSECMARK.o
obj-$(CONFIG_NETFILTER_XT_TARGET_CHAOS) += xt_CHAOS.o
-Index: linux-2.6.23.17/net/netfilter/xt_TARPIT.c
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/net/netfilter/xt_TARPIT.c
++++ b/net/netfilter/xt_TARPIT.c
@@ -0,0 +1,280 @@
+/*
+ * Kernel module to capture and hold incoming TCP connections using
-Index: linux-2.6.23.17/net/netfilter/Kconfig
-===================================================================
---- linux-2.6.23.17.orig/net/netfilter/Kconfig
-+++ linux-2.6.23.17/net/netfilter/Kconfig
-@@ -143,7 +143,7 @@ config NF_CONNTRACK_FTP
+--- a/net/netfilter/Kconfig
++++ b/net/netfilter/Kconfig
+@@ -143,7 +143,7 @@
config NF_CONNTRACK_H323
tristate "H.323 protocol support (EXPERIMENTAL)"
help
H.323 is a VoIP signalling protocol from ITU-T. As one of the most
important VoIP protocols, it is widely used by voice hardware and
-@@ -420,7 +420,7 @@ config NETFILTER_XT_TARGET_TARPIT
+@@ -420,7 +420,7 @@
config NETFILTER_XT_TARGET_TCPMSS
tristate '"TCPMSS" target support'
-Index: linux-2.6.23.17/include/linux/netfilter/nf_conntrack_rtsp.h
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/include/linux/netfilter/nf_conntrack_rtsp.h
++++ b/include/linux/netfilter/nf_conntrack_rtsp.h
@@ -0,0 +1,63 @@
+/*
+ * RTSP extension for IP connection tracking.
+#endif /* __KERNEL__ */
+
+#endif /* _IP_CONNTRACK_RTSP_H */
-Index: linux-2.6.23.17/include/linux/netfilter_helpers.h
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/include/linux/netfilter_helpers.h
++++ b/include/linux/netfilter_helpers.h
@@ -0,0 +1,133 @@
+/*
+ * Helpers for netfiler modules. This file provides implementations for basic
+#endif /* __KERNEL__ */
+
+#endif /* _NETFILTER_HELPERS_H */
-Index: linux-2.6.23.17/include/linux/netfilter_mime.h
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/include/linux/netfilter_mime.h
++++ b/include/linux/netfilter_mime.h
@@ -0,0 +1,89 @@
+/*
+ * MIME functions for netfilter modules. This file provides implementations
+#endif /* __KERNEL__ */
+
+#endif /* _NETFILTER_MIME_H */
-Index: linux-2.6.23.17/net/ipv4/netfilter/Makefile
-===================================================================
---- linux-2.6.23.17.orig/net/ipv4/netfilter/Makefile
-+++ linux-2.6.23.17/net/ipv4/netfilter/Makefile
-@@ -23,6 +23,7 @@ obj-$(CONFIG_NF_NAT_AMANDA) += nf_nat_am
+--- a/net/ipv4/netfilter/Makefile
++++ b/net/ipv4/netfilter/Makefile
+@@ -23,6 +23,7 @@
obj-$(CONFIG_NF_NAT_FTP) += nf_nat_ftp.o
obj-$(CONFIG_NF_NAT_H323) += nf_nat_h323.o
obj-$(CONFIG_NF_NAT_IRC) += nf_nat_irc.o
obj-$(CONFIG_NF_NAT_PPTP) += nf_nat_pptp.o
obj-$(CONFIG_NF_NAT_SIP) += nf_nat_sip.o
obj-$(CONFIG_NF_NAT_SNMP_BASIC) += nf_nat_snmp_basic.o
-Index: linux-2.6.23.17/net/netfilter/Kconfig
-===================================================================
---- linux-2.6.23.17.orig/net/netfilter/Kconfig
-+++ linux-2.6.23.17/net/netfilter/Kconfig
-@@ -249,6 +249,16 @@ config NF_CONNTRACK_TFTP
+--- a/net/netfilter/Kconfig
++++ b/net/netfilter/Kconfig
+@@ -249,6 +249,16 @@
To compile it as a module, choose M here. If unsure, say N.
config NF_CT_NETLINK
tristate 'Connection tracking netlink interface (EXPERIMENTAL)'
depends on EXPERIMENTAL && NF_CONNTRACK && NETFILTER_NETLINK
-Index: linux-2.6.23.17/net/netfilter/Makefile
-===================================================================
---- linux-2.6.23.17.orig/net/netfilter/Makefile
-+++ linux-2.6.23.17/net/netfilter/Makefile
-@@ -33,6 +33,7 @@ obj-$(CONFIG_NF_CONNTRACK_PPTP) += nf_co
+--- a/net/netfilter/Makefile
++++ b/net/netfilter/Makefile
+@@ -33,6 +33,7 @@
obj-$(CONFIG_NF_CONNTRACK_SANE) += nf_conntrack_sane.o
obj-$(CONFIG_NF_CONNTRACK_SIP) += nf_conntrack_sip.o
obj-$(CONFIG_NF_CONNTRACK_TFTP) += nf_conntrack_tftp.o
# generic X tables
obj-$(CONFIG_NETFILTER_XTABLES) += x_tables.o xt_tcpudp.o
-Index: linux-2.6.23.17/net/ipv4/netfilter/Kconfig
-===================================================================
---- linux-2.6.23.17.orig/net/ipv4/netfilter/Kconfig
-+++ linux-2.6.23.17/net/ipv4/netfilter/Kconfig
-@@ -296,6 +296,11 @@ config NF_NAT_IRC
+--- a/net/ipv4/netfilter/Kconfig
++++ b/net/ipv4/netfilter/Kconfig
+@@ -296,6 +296,11 @@
depends on IP_NF_IPTABLES && NF_CONNTRACK && NF_NAT
default NF_NAT && NF_CONNTRACK_IRC
config NF_NAT_TFTP
tristate
depends on IP_NF_IPTABLES && NF_CONNTRACK && NF_NAT
-Index: linux-2.6.23.17/net/netfilter/nf_conntrack_rtsp.c
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/net/netfilter/nf_conntrack_rtsp.c
++++ b/net/netfilter/nf_conntrack_rtsp.c
@@ -0,0 +1,513 @@
+/*
+ * RTSP extension for IP connection tracking
+
+EXPORT_SYMBOL(nf_nat_rtsp_hook_expectfn);
+
-Index: linux-2.6.23.17/net/ipv4/netfilter/nf_nat_rtsp.c
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/net/ipv4/netfilter/nf_nat_rtsp.c
++++ b/net/ipv4/netfilter/nf_nat_rtsp.c
@@ -0,0 +1,496 @@
+/*
+ * RTSP extension for TCP NAT alteration
-Index: linux-2.6.23.17/include/linux/pkt_sched.h
-===================================================================
---- linux-2.6.23.17.orig/include/linux/pkt_sched.h
-+++ linux-2.6.23.17/include/linux/pkt_sched.h
-@@ -155,8 +155,37 @@ struct tc_sfq_qopt
+--- a/include/linux/pkt_sched.h
++++ b/include/linux/pkt_sched.h
+@@ -155,8 +155,37 @@
*
* The only reason for this is efficiency, it is possible
* to change these parameters in compile time.
/* RED section */
enum
-Index: linux-2.6.23.17/net/sched/Kconfig
-===================================================================
---- linux-2.6.23.17.orig/net/sched/Kconfig
-+++ linux-2.6.23.17/net/sched/Kconfig
-@@ -144,6 +144,37 @@ config NET_SCH_SFQ
+--- a/net/sched/Kconfig
++++ b/net/sched/Kconfig
+@@ -144,6 +144,37 @@
To compile this code as a module, choose M here: the
module will be called sch_sfq.
config NET_SCH_TEQL
tristate "True Link Equalizer (TEQL)"
---help---
-Index: linux-2.6.23.17/net/sched/Makefile
-===================================================================
---- linux-2.6.23.17.orig/net/sched/Makefile
-+++ linux-2.6.23.17/net/sched/Makefile
-@@ -22,6 +22,7 @@ obj-$(CONFIG_NET_SCH_GRED) += sch_gred.o
+--- a/net/sched/Makefile
++++ b/net/sched/Makefile
+@@ -22,6 +22,7 @@
obj-$(CONFIG_NET_SCH_INGRESS) += sch_ingress.o
obj-$(CONFIG_NET_SCH_DSMARK) += sch_dsmark.o
obj-$(CONFIG_NET_SCH_SFQ) += sch_sfq.o
obj-$(CONFIG_NET_SCH_TBF) += sch_tbf.o
obj-$(CONFIG_NET_SCH_TEQL) += sch_teql.o
obj-$(CONFIG_NET_SCH_PRIO) += sch_prio.o
-Index: linux-2.6.23.17/net/sched/sch_esfq.c
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/net/sched/sch_esfq.c
++++ b/net/sched/sch_esfq.c
@@ -0,0 +1,702 @@
+/*
+ * net/sched/sch_esfq.c Extended Stochastic Fairness Queueing discipline.
-Index: linux-2.6.23.17/include/linux/rtnetlink.h
-===================================================================
---- linux-2.6.23.17.orig/include/linux/rtnetlink.h
-+++ linux-2.6.23.17/include/linux/rtnetlink.h
-@@ -293,6 +293,8 @@ struct rtnexthop
+--- a/include/linux/rtnetlink.h
++++ b/include/linux/rtnetlink.h
+@@ -293,6 +293,8 @@
#define RTNH_F_DEAD 1 /* Nexthop is dead (used by multipath) */
#define RTNH_F_PERVASIVE 2 /* Do recursive gateway lookup */
#define RTNH_F_ONLINK 4 /* Gateway is forced on link */
/* Macros to handle hexthops */
-Index: linux-2.6.23.17/include/net/flow.h
-===================================================================
---- linux-2.6.23.17.orig/include/net/flow.h
-+++ linux-2.6.23.17/include/net/flow.h
-@@ -19,6 +19,8 @@ struct flowi {
+--- a/include/net/flow.h
++++ b/include/net/flow.h
+@@ -19,6 +19,8 @@
struct {
__be32 daddr;
__be32 saddr;
__u8 tos;
__u8 scope;
} ip4_u;
-@@ -43,6 +45,8 @@ struct flowi {
+@@ -43,6 +45,8 @@
#define fl6_flowlabel nl_u.ip6_u.flowlabel
#define fl4_dst nl_u.ip4_u.daddr
#define fl4_src nl_u.ip4_u.saddr
#define fl4_tos nl_u.ip4_u.tos
#define fl4_scope nl_u.ip4_u.scope
-Index: linux-2.6.23.17/net/ipv4/route.c
-===================================================================
---- linux-2.6.23.17.orig/net/ipv4/route.c
-+++ linux-2.6.23.17/net/ipv4/route.c
-@@ -1116,6 +1116,7 @@ void ip_rt_redirect(__be32 old_gw, __be3
+--- a/net/ipv4/route.c
++++ b/net/ipv4/route.c
+@@ -1116,6 +1116,7 @@
/* Gateway is different ... */
rt->rt_gateway = new_gw;
/* Redirect received -> path was valid */
dst_confirm(&rth->u.dst);
-@@ -1551,6 +1552,7 @@ static int ip_route_input_mc(struct sk_b
+@@ -1551,6 +1552,7 @@
rth->fl.fl4_tos = tos;
rth->fl.mark = skb->mark;
rth->fl.fl4_src = saddr;
rth->rt_src = saddr;
#ifdef CONFIG_NET_CLS_ROUTE
rth->u.dst.tclassid = itag;
-@@ -1561,6 +1563,7 @@ static int ip_route_input_mc(struct sk_b
+@@ -1561,6 +1563,7 @@
dev_hold(rth->u.dst.dev);
rth->idev = in_dev_get(rth->u.dst.dev);
rth->fl.oif = 0;
rth->rt_gateway = daddr;
rth->rt_spec_dst= spec_dst;
rth->rt_type = RTN_MULTICAST;
-@@ -1624,7 +1627,7 @@ static void ip_handle_martian_source(str
+@@ -1624,7 +1627,7 @@
static inline int __mkroute_input(struct sk_buff *skb,
struct fib_result* res,
struct in_device *in_dev,
struct rtable **result)
{
-@@ -1659,6 +1662,7 @@ static inline int __mkroute_input(struct
+@@ -1659,6 +1662,7 @@
flags |= RTCF_DIRECTSRC;
if (out_dev == in_dev && err && !(flags & (RTCF_NAT | RTCF_MASQ)) &&
(IN_DEV_SHARED_MEDIA(out_dev) ||
inet_addr_onlink(out_dev, saddr, FIB_RES_GW(*res))))
flags |= RTCF_DOREDIRECT;
-@@ -1692,6 +1696,7 @@ static inline int __mkroute_input(struct
+@@ -1692,6 +1696,7 @@
rth->fl.mark = skb->mark;
rth->fl.fl4_src = saddr;
rth->rt_src = saddr;
rth->rt_gateway = daddr;
rth->rt_iif =
rth->fl.iif = in_dev->dev->ifindex;
-@@ -1699,6 +1704,7 @@ static inline int __mkroute_input(struct
+@@ -1699,6 +1704,7 @@
dev_hold(rth->u.dst.dev);
rth->idev = in_dev_get(rth->u.dst.dev);
rth->fl.oif = 0;
rth->rt_spec_dst= spec_dst;
rth->u.dst.input = ip_forward;
-@@ -1720,19 +1726,21 @@ static inline int ip_mkroute_input(struc
+@@ -1720,19 +1726,21 @@
struct fib_result* res,
const struct flowi *fl,
struct in_device *in_dev,
if (err)
return err;
-@@ -1752,18 +1760,18 @@ static inline int ip_mkroute_input(struc
+@@ -1752,18 +1760,18 @@
*/
static int ip_route_input_slow(struct sk_buff *skb, __be32 daddr, __be32 saddr,
unsigned flags = 0;
u32 itag = 0;
struct rtable * rth;
-@@ -1796,6 +1804,12 @@ static int ip_route_input_slow(struct sk
+@@ -1796,6 +1804,12 @@
if (BADCLASS(daddr) || ZERONET(daddr) || LOOPBACK(daddr))
goto martian_destination;
/*
* Now we are ready to route packet.
*/
-@@ -1805,6 +1819,10 @@ static int ip_route_input_slow(struct sk
+@@ -1805,6 +1819,10 @@
goto no_route;
}
free_res = 1;
RT_CACHE_STAT_INC(in_slow_tot);
-@@ -1829,7 +1847,7 @@ static int ip_route_input_slow(struct sk
+@@ -1829,7 +1847,7 @@
if (res.type != RTN_UNICAST)
goto martian_destination;
if (err == -ENOBUFS)
goto e_nobufs;
if (err == -EINVAL)
-@@ -1844,6 +1862,8 @@ out: return err;
+@@ -1844,6 +1862,8 @@
brd_input:
if (skb->protocol != htons(ETH_P_IP))
goto e_inval;
if (ZERONET(saddr))
spec_dst = inet_select_addr(dev, 0, RT_SCOPE_LINK);
-@@ -1884,6 +1904,7 @@ local_input:
+@@ -1884,6 +1904,7 @@
rth->u.dst.dev = &loopback_dev;
dev_hold(rth->u.dst.dev);
rth->idev = in_dev_get(rth->u.dst.dev);
rth->rt_gateway = daddr;
rth->rt_spec_dst= spec_dst;
rth->u.dst.input= ip_local_deliver;
-@@ -1933,8 +1954,9 @@ martian_source:
+@@ -1933,8 +1954,9 @@
goto e_inval;
}
{
struct rtable * rth;
unsigned hash;
-@@ -1949,6 +1971,7 @@ int ip_route_input(struct sk_buff *skb,
+@@ -1949,6 +1971,7 @@
if (rth->fl.fl4_dst == daddr &&
rth->fl.fl4_src == saddr &&
rth->fl.iif == iif &&
rth->fl.oif == 0 &&
rth->fl.mark == skb->mark &&
rth->fl.fl4_tos == tos) {
-@@ -1995,7 +2018,19 @@ int ip_route_input(struct sk_buff *skb,
+@@ -1995,7 +2018,19 @@
rcu_read_unlock();
return -EINVAL;
}
}
static inline int __mkroute_output(struct rtable **result,
-@@ -2067,6 +2102,7 @@ static inline int __mkroute_output(struc
+@@ -2067,6 +2102,7 @@
rth->fl.fl4_tos = tos;
rth->fl.fl4_src = oldflp->fl4_src;
rth->fl.oif = oldflp->oif;
rth->fl.mark = oldflp->mark;
rth->rt_dst = fl->fl4_dst;
rth->rt_src = fl->fl4_src;
-@@ -2145,6 +2181,7 @@ static int ip_route_output_slow(struct r
+@@ -2145,6 +2181,7 @@
struct flowi fl = { .nl_u = { .ip4_u =
{ .daddr = oldflp->fl4_dst,
.saddr = oldflp->fl4_src,
.tos = tos & IPTOS_RT_MASK,
.scope = ((tos & RTO_ONLINK) ?
RT_SCOPE_LINK :
-@@ -2248,6 +2285,7 @@ static int ip_route_output_slow(struct r
+@@ -2248,6 +2285,7 @@
dev_out = &loopback_dev;
dev_hold(dev_out);
fl.oif = loopback_dev.ifindex;
res.type = RTN_LOCAL;
flags |= RTCF_LOCAL;
goto make_route;
-@@ -2255,7 +2293,7 @@ static int ip_route_output_slow(struct r
+@@ -2255,7 +2293,7 @@
if (fib_lookup(&fl, &res)) {
res.fi = NULL;
/* Apparently, routing tables are wrong. Assume,
that the destination is on link.
-@@ -2295,6 +2333,7 @@ static int ip_route_output_slow(struct r
+@@ -2295,6 +2333,7 @@
dev_out = &loopback_dev;
dev_hold(dev_out);
fl.oif = dev_out->ifindex;
if (res.fi)
fib_info_put(res.fi);
res.fi = NULL;
-@@ -2302,13 +2341,12 @@ static int ip_route_output_slow(struct r
+@@ -2302,13 +2341,12 @@
goto make_route;
}
if (!fl.fl4_src)
fl.fl4_src = FIB_RES_PREFSRC(res);
-@@ -2345,6 +2383,7 @@ int __ip_route_output_key(struct rtable
+@@ -2345,6 +2383,7 @@
rth->fl.fl4_src == flp->fl4_src &&
rth->fl.iif == 0 &&
rth->fl.oif == flp->oif &&
rth->fl.mark == flp->mark &&
!((rth->fl.fl4_tos ^ flp->fl4_tos) &
(IPTOS_RT_MASK | RTO_ONLINK))) {
-@@ -3030,3 +3069,4 @@ int __init ip_rt_init(void)
+@@ -3030,3 +3069,4 @@
EXPORT_SYMBOL(__ip_select_ident);
EXPORT_SYMBOL(ip_route_input);
EXPORT_SYMBOL(ip_route_output_key);
-Index: linux-2.6.23.17/arch/mips/Makefile
-===================================================================
---- linux-2.6.23.17.orig/arch/mips/Makefile
-+++ linux-2.6.23.17/arch/mips/Makefile
-@@ -565,6 +565,9 @@ core-$(CONFIG_TOSHIBA_RBTX4938) += arch/
+--- a/arch/mips/Makefile
++++ b/arch/mips/Makefile
+@@ -565,6 +565,9 @@
cflags-$(CONFIG_TOSHIBA_RBTX4938) += -Iinclude/asm-mips/mach-tx49xx
load-$(CONFIG_TOSHIBA_RBTX4938) += 0xffffffff80100000
-Index: linux-2.6.23.17/fs/jffs2/build.c
-===================================================================
---- linux-2.6.23.17.orig/fs/jffs2/build.c
-+++ linux-2.6.23.17/fs/jffs2/build.c
-@@ -105,6 +105,17 @@ static int jffs2_build_filesystem(struct
+--- a/fs/jffs2/build.c
++++ b/fs/jffs2/build.c
+@@ -105,6 +105,17 @@
dbg_fsbuild("scanned flash completely\n");
jffs2_dbg_dump_block_lists_nolock(c);
dbg_fsbuild("pass 1 starting\n");
c->flags |= JFFS2_SB_FLAG_BUILDING;
/* Now scan the directory tree, increasing nlink according to every dirent found. */
-Index: linux-2.6.23.17/fs/jffs2/scan.c
-===================================================================
---- linux-2.6.23.17.orig/fs/jffs2/scan.c
-+++ linux-2.6.23.17/fs/jffs2/scan.c
-@@ -142,9 +142,12 @@ int jffs2_scan_medium(struct jffs2_sb_in
+--- a/fs/jffs2/scan.c
++++ b/fs/jffs2/scan.c
+@@ -142,9 +142,12 @@
/* reset summary info for next eraseblock scan */
jffs2_sum_reset_collected(s);
if (ret < 0)
goto out;
-@@ -545,6 +548,17 @@ static int jffs2_scan_eraseblock (struct
+@@ -545,6 +548,17 @@
return err;
}
-Index: linux-2.6.23.17/include/asm-powerpc/segment.h
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/include/asm-powerpc/segment.h
++++ b/include/asm-powerpc/segment.h
@@ -0,0 +1,6 @@
+#ifndef _ASM_SEGMENT_H
+#define _ASM_SEGMENT_H
-Index: linux-2.6.23.17/drivers/net/r8169.c
-===================================================================
---- linux-2.6.23.17.orig/drivers/net/r8169.c
-+++ linux-2.6.23.17/drivers/net/r8169.c
-@@ -1459,7 +1459,7 @@ static const struct rtl_cfg_info {
+--- a/drivers/net/r8169.c
++++ b/drivers/net/r8169.c
+@@ -1459,7 +1459,7 @@
.hw_start = rtl_hw_start_8169,
.region = 1,
.align = 0,
RxFIFOOver | TxErr | TxOK | RxOK | RxErr,
.napi_event = RxFIFOOver | TxErr | TxOK | RxOK | RxOverflow
},
-@@ -1467,7 +1467,7 @@ static const struct rtl_cfg_info {
+@@ -1467,7 +1467,7 @@
.hw_start = rtl_hw_start_8168,
.region = 2,
.align = 8,
TxErr | TxOK | RxOK | RxErr,
.napi_event = TxErr | TxOK | RxOK | RxOverflow
},
-@@ -1475,7 +1475,7 @@ static const struct rtl_cfg_info {
+@@ -1475,7 +1475,7 @@
.hw_start = rtl_hw_start_8101,
.region = 2,
.align = 8,
RxFIFOOver | TxErr | TxOK | RxOK | RxErr,
.napi_event = RxFIFOOver | TxErr | TxOK | RxOK | RxOverflow
}
-@@ -2779,10 +2779,12 @@ static irqreturn_t rtl8169_interrupt(int
+@@ -2779,10 +2779,12 @@
break;
}
-Index: linux-2.6.23.17/fs/Kconfig
-===================================================================
---- linux-2.6.23.17.orig/fs/Kconfig
-+++ linux-2.6.23.17/fs/Kconfig
-@@ -458,6 +458,9 @@ config OCFS2_DEBUG_MASKLOG
+--- a/fs/Kconfig
++++ b/fs/Kconfig
+@@ -458,6 +458,9 @@
This option will enlarge your kernel, but it allows debugging of
ocfs2 filesystem issues.
config MINIX_FS
tristate "Minix fs support"
help
-Index: linux-2.6.23.17/fs/Makefile
-===================================================================
---- linux-2.6.23.17.orig/fs/Makefile
-+++ linux-2.6.23.17/fs/Makefile
-@@ -76,6 +76,7 @@ obj-$(CONFIG_SQUASHFS) += squashfs/
+--- a/fs/Makefile
++++ b/fs/Makefile
+@@ -76,6 +76,7 @@
obj-$(CONFIG_RAMFS) += ramfs/
obj-$(CONFIG_HUGETLBFS) += hugetlbfs/
obj-$(CONFIG_CODA_FS) += coda/
obj-$(CONFIG_MINIX_FS) += minix/
obj-$(CONFIG_FAT_FS) += fat/
obj-$(CONFIG_MSDOS_FS) += msdos/
-Index: linux-2.6.23.17/fs/mini_fo/aux.c
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/fs/mini_fo/aux.c
++++ b/fs/mini_fo/aux.c
@@ -0,0 +1,577 @@
+/*
+ * Copyright (c) 1997-2003 Erez Zadok
+
+#endif /* unused */
+
-Index: linux-2.6.23.17/fs/mini_fo/ChangeLog
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/fs/mini_fo/ChangeLog
++++ b/fs/mini_fo/ChangeLog
@@ -0,0 +1,281 @@
+2006-01-24 Markus Klotzbuecher <mk@mary.denx.de>
+
+ * Implementation of mini_fo_mknod and mini_fo_rename, support
+ for device files.
+
-Index: linux-2.6.23.17/fs/mini_fo/dentry.c
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/fs/mini_fo/dentry.c
++++ b/fs/mini_fo/dentry.c
@@ -0,0 +1,244 @@
+/*
+ * Copyright (c) 1997-2003 Erez Zadok
+ d_delete: mini_fo_d_delete,
+ d_iput: mini_fo_d_iput,
+};
-Index: linux-2.6.23.17/fs/mini_fo/file.c
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/fs/mini_fo/file.c
++++ b/fs/mini_fo/file.c
@@ -0,0 +1,713 @@
+/*
+ * Copyright (c) 1997-2003 Erez Zadok
+ /* not implemented: sendpage */
+ /* not implemented: get_unmapped_area */
+ };
-Index: linux-2.6.23.17/fs/mini_fo/fist.h
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/fs/mini_fo/fist.h
++++ b/fs/mini_fo/fist.h
@@ -0,0 +1,252 @@
+/*
+ * Copyright (c) 1997-2003 Erez Zadok
+# define FIST_IOCTL_SET_DEBUG_VALUE _IOW(0x15, 2, int)
+
+#endif /* not __FIST_H_ */
-Index: linux-2.6.23.17/fs/mini_fo/inode.c
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/fs/mini_fo/inode.c
++++ b/fs/mini_fo/inode.c
@@ -0,0 +1,1564 @@
+/*
+ * Copyright (c) 1997-2003 Erez Zadok
+ removexattr: mini_fo_removexattr
+# endif /* XATTR && LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,20) */
+ };
-Index: linux-2.6.23.17/fs/mini_fo/main.c
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/fs/mini_fo/main.c
++++ b/fs/mini_fo/main.c
@@ -0,0 +1,423 @@
+/*
+ * Copyright (c) 1997-2003 Erez Zadok
+
+module_init(init_mini_fo_fs)
+module_exit(exit_mini_fo_fs)
-Index: linux-2.6.23.17/fs/mini_fo/Makefile
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/fs/mini_fo/Makefile
++++ b/fs/mini_fo/Makefile
@@ -0,0 +1,17 @@
+#
+# Makefile for mini_fo 2.4 and 2.6 Linux kernels
+# dependencies
+${mini_fo-objs}: mini_fo.h fist.h
+
-Index: linux-2.6.23.17/fs/mini_fo/meta.c
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/fs/mini_fo/meta.c
++++ b/fs/mini_fo/meta.c
@@ -0,0 +1,1000 @@
+/*
+ * Copyright (C) 2004, 2005 Markus Klotzbuecher <mk@creamnet.de>
+ return 0;
+}
+
-Index: linux-2.6.23.17/fs/mini_fo/mini_fo.h
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/fs/mini_fo/mini_fo.h
++++ b/fs/mini_fo/mini_fo.h
@@ -0,0 +1,510 @@
+/*
+ * Copyright (c) 1997-2003 Erez Zadok
+/* ioctls */
+
+#endif /* not __MINI_FO_H_ */
-Index: linux-2.6.23.17/fs/mini_fo/mini_fo-merge
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/fs/mini_fo/mini_fo-merge
++++ b/fs/mini_fo/mini_fo-merge
@@ -0,0 +1,180 @@
+#!/bin/bash
+#
+#rm $TMP/$SKIP_DEL_LIST
+
+echo "Done!"
-Index: linux-2.6.23.17/fs/mini_fo/mini_fo-overlay
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/fs/mini_fo/mini_fo-overlay
++++ b/fs/mini_fo/mini_fo-overlay
@@ -0,0 +1,130 @@
+#!/bin/bash
+#
+if [ $? -ne 0 ]; then
+ echo "Error, mounting failed, maybe no permisson to mount?"
+fi
-Index: linux-2.6.23.17/fs/mini_fo/mmap.c
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/fs/mini_fo/mmap.c
++++ b/fs/mini_fo/mmap.c
@@ -0,0 +1,637 @@
+/*
+ * Copyright (c) 1997-2003 Erez Zadok
+ print_exit_status(err);
+ return err;
+}
-Index: linux-2.6.23.17/fs/mini_fo/README
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/fs/mini_fo/README
++++ b/fs/mini_fo/README
@@ -0,0 +1,163 @@
+README for the mini_fo overlay file system
+=========================================
+2 of the License, or (at your option) any later version.
+
+
-Index: linux-2.6.23.17/fs/mini_fo/RELEASE_NOTES
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/fs/mini_fo/RELEASE_NOTES
++++ b/fs/mini_fo/RELEASE_NOTES
@@ -0,0 +1,111 @@
+Release: mini_fo-0.6.1 (v0-6-1)
+Date: 21.09.2005
+original state. I hope to fix this someday. Please note that this does
+not effect the special hard links '.' and '..', that are handled
+seperately by the lower fs.
-Index: linux-2.6.23.17/fs/mini_fo/state.c
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/fs/mini_fo/state.c
++++ b/fs/mini_fo/state.c
@@ -0,0 +1,620 @@
+/*
+ * Copyright (C) 2005 Markus Klotzbuecher <mk@creamnet.de>
+ return err;
+}
+
-Index: linux-2.6.23.17/fs/mini_fo/super.c
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/fs/mini_fo/super.c
++++ b/fs/mini_fo/super.c
@@ -0,0 +1,281 @@
+/*
+ * Copyright (c) 1997-2003 Erez Zadok
-Index: linux-2.6.23.17/include/linux/ieee80211.h
-===================================================================
---- linux-2.6.23.17.orig/include/linux/ieee80211.h
-+++ linux-2.6.23.17/include/linux/ieee80211.h
-@@ -106,6 +106,75 @@ struct ieee80211_hdr {
+--- a/include/linux/ieee80211.h
++++ b/include/linux/ieee80211.h
+@@ -106,6 +106,75 @@
} __attribute__ ((packed));
struct ieee80211_mgmt {
__le16 frame_control;
__le16 duration;
-@@ -173,9 +242,51 @@ struct ieee80211_mgmt {
+@@ -173,9 +242,51 @@
struct {
u8 action_code;
u8 dialog_token;
struct{
u8 action_code;
u8 element_id;
-@@ -184,6 +295,25 @@ struct ieee80211_mgmt {
+@@ -184,6 +295,25 @@
u8 new_chan;
u8 switch_count;
} __attribute__((packed)) chan_switch;
} u;
} __attribute__ ((packed)) action;
} u;
-@@ -270,6 +400,18 @@ enum ieee80211_statuscode {
+@@ -270,6 +400,18 @@
WLAN_STATUS_UNSUPP_RSN_VERSION = 44,
WLAN_STATUS_INVALID_RSN_IE_CAP = 45,
WLAN_STATUS_CIPHER_SUITE_REJECTED = 46,
};
-@@ -300,9 +442,50 @@ enum ieee80211_reasoncode {
+@@ -300,9 +442,50 @@
WLAN_REASON_INVALID_RSN_IE_CAP = 22,
WLAN_REASON_IEEE8021X_FAILED = 23,
WLAN_REASON_CIPHER_SUITE_REJECTED = 24,
/* Information Element IDs */
enum ieee80211_eid {
WLAN_EID_SSID = 0,
-@@ -318,6 +501,15 @@ enum ieee80211_eid {
+@@ -318,6 +501,15 @@
WLAN_EID_HP_PARAMS = 8,
WLAN_EID_HP_TABLE = 9,
WLAN_EID_REQUEST = 10,
/* 802.11h */
WLAN_EID_PWR_CONSTRAINT = 32,
WLAN_EID_PWR_CAPABILITY = 33,
-@@ -332,6 +524,9 @@ enum ieee80211_eid {
+@@ -332,6 +524,9 @@
/* 802.11g */
WLAN_EID_ERP_INFO = 42,
WLAN_EID_EXT_SUPP_RATES = 50,
/* 802.11i */
WLAN_EID_RSN = 48,
WLAN_EID_WPA = 221,
-@@ -340,6 +535,9 @@ enum ieee80211_eid {
+@@ -340,6 +535,9 @@
WLAN_EID_QOS_PARAMETER = 222
};
/* cipher suite selectors */
#define WLAN_CIPHER_SUITE_USE_GROUP 0x000FAC00
#define WLAN_CIPHER_SUITE_WEP40 0x000FAC01
-@@ -350,4 +548,37 @@ enum ieee80211_eid {
+@@ -350,4 +548,37 @@
#define WLAN_MAX_KEY_LEN 32
+};
+
#endif /* IEEE80211_H */
-Index: linux-2.6.23.17/include/linux/nl80211.h
-===================================================================
---- linux-2.6.23.17.orig/include/linux/nl80211.h
-+++ linux-2.6.23.17/include/linux/nl80211.h
+--- a/include/linux/nl80211.h
++++ b/include/linux/nl80211.h
@@ -7,6 +7,217 @@
*/
* enum nl80211_iftype - (virtual) interface types
* @NL80211_IFTYPE_UNSPECIFIED: unspecified type, driver decides
* @NL80211_IFTYPE_ADHOC: independent BSS member
-@@ -35,4 +246,56 @@ enum nl80211_iftype {
+@@ -35,4 +246,56 @@
};
#define NL80211_IFTYPE_MAX (__NL80211_IFTYPE_AFTER_LAST - 1)
+#define NL80211_KEYTYPE_MAX (__NL80211_KEYTYPE_AFTER_LAST - 1)
+
#endif /* __LINUX_NL80211_H */
-Index: linux-2.6.23.17/include/net/cfg80211.h
-===================================================================
---- linux-2.6.23.17.orig/include/net/cfg80211.h
-+++ linux-2.6.23.17/include/net/cfg80211.h
+--- a/include/net/cfg80211.h
++++ b/include/net/cfg80211.h
@@ -3,6 +3,7 @@
#include <linux/netlink.h>
#include <net/genetlink.h>
/*
-@@ -49,6 +50,69 @@ extern int ieee80211_radiotap_iterator_n
+@@ -49,6 +50,69 @@
struct ieee80211_radiotap_iterator *iterator);
/* from net/wireless.h */
struct wiphy;
-@@ -68,11 +132,62 @@ struct wiphy;
+@@ -68,11 +132,62 @@
* @add_virtual_intf: create a new virtual interface with the given name
*
* @del_virtual_intf: remove the virtual interface determined by ifindex.
+ u32 seq, int flags, u8 cmd);
+
#endif /* __NET_CFG80211_H */
-Index: linux-2.6.23.17/include/net/iw_handler.h
-===================================================================
---- linux-2.6.23.17.orig/include/net/iw_handler.h
-+++ linux-2.6.23.17/include/net/iw_handler.h
-@@ -431,7 +431,13 @@ struct iw_public_data {
+--- a/include/net/iw_handler.h
++++ b/include/net/iw_handler.h
+@@ -431,7 +431,13 @@
* Those may be called only within the kernel.
*/
/* Send a single event to user space */
extern void wireless_send_event(struct net_device * dev,
-Index: linux-2.6.23.17/include/net/mac80211.h
-===================================================================
---- linux-2.6.23.17.orig/include/net/mac80211.h
-+++ linux-2.6.23.17/include/net/mac80211.h
-@@ -300,7 +300,6 @@ struct ieee80211_conf {
+--- a/include/net/mac80211.h
++++ b/include/net/mac80211.h
+@@ -300,7 +300,6 @@
/* Following five fields are used for IEEE 802.11H */
unsigned int radar_detect;
unsigned int spect_mgmt;
unsigned int quiet_duration; /* duration of quiet period */
unsigned int quiet_offset; /* how far into the beacon is the quiet
* period */
-@@ -521,6 +520,9 @@ struct ieee80211_hw {
+@@ -521,6 +520,9 @@
* per-packet RC4 key with each TX frame when doing hwcrypto */
#define IEEE80211_HW_TKIP_REQ_PHASE2_KEY (1<<14)
u32 flags; /* hardware flags defined above */
/* Set to the size of a needed device specific skb headroom for TX skbs. */
-@@ -649,8 +651,7 @@ struct ieee80211_ops {
+@@ -649,8 +651,7 @@
* used if the wlan hardware or low-level driver implements PAE.
* 80211.o module will anyway filter frames based on authorization
* state, so this function pointer can be NULL if low-level driver does
int (*set_port_auth)(struct ieee80211_hw *hw, u8 *addr,
int authorized);
-@@ -702,8 +703,9 @@ struct ieee80211_ops {
+@@ -702,8 +703,9 @@
/* Get statistics of the current TX queue status. This is used to get
* number of currently queued packets (queue length), maximum queue
* size (limit), and total number of packets sent using each TX queue
int (*get_tx_stats)(struct ieee80211_hw *hw,
struct ieee80211_tx_queue_stats *stats);
-@@ -713,12 +715,25 @@ struct ieee80211_ops {
+@@ -713,12 +715,25 @@
* Must be atomic. */
u64 (*get_tsf)(struct ieee80211_hw *hw);
-Index: linux-2.6.23.17/lib/kobject_uevent.c
-===================================================================
---- linux-2.6.23.17.orig/lib/kobject_uevent.c
-+++ linux-2.6.23.17/lib/kobject_uevent.c
-@@ -40,9 +40,22 @@ u64 uevent_seqnum;
+--- a/lib/kobject_uevent.c
++++ b/lib/kobject_uevent.c
+@@ -40,9 +40,22 @@
char uevent_helper[UEVENT_HELPER_PATH_LEN] = "/sbin/hotplug";
static DEFINE_SPINLOCK(sequence_lock);
#if defined(CONFIG_NET)
/**
* kobject_uevent_env - send an uevent with environmental data
*
-@@ -159,9 +172,7 @@ int kobject_uevent_env(struct kobject *k
+@@ -159,9 +172,7 @@
}
/* we will send an event, request a new sequence number */
-Index: linux-2.6.23.17/sound/core/Kconfig
-===================================================================
---- linux-2.6.23.17.orig/sound/core/Kconfig
-+++ linux-2.6.23.17/sound/core/Kconfig
-@@ -9,7 +9,7 @@ config SND_PCM
+--- a/sound/core/Kconfig
++++ b/sound/core/Kconfig
+@@ -9,7 +9,7 @@
depends on SND
config SND_HWDEP
-Index: linux-2.6.23.17/Documentation/pps/Makefile
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/Documentation/pps/Makefile
++++ b/Documentation/pps/Makefile
@@ -0,0 +1,27 @@
+TARGETS = ppstest ppsctl
+
+clean :
+ rm -f *.o *~ core .depend
+ rm -f ${TARGETS}
-Index: linux-2.6.23.17/Documentation/pps/pps.txt
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/Documentation/pps/pps.txt
++++ b/Documentation/pps/pps.txt
@@ -0,0 +1,170 @@
+
+ PPS - Pulse Per Second
+
+Please, note that to compile userland programs you need the file timepps.h
+(see Documentation/pps/).
-Index: linux-2.6.23.17/Documentation/pps/ppsctl.c
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/Documentation/pps/ppsctl.c
++++ b/Documentation/pps/ppsctl.c
@@ -0,0 +1,62 @@
+#include <stdio.h>
+#include <unistd.h>
+
+ return 0;
+}
-Index: linux-2.6.23.17/Documentation/pps/ppsfind
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/Documentation/pps/ppsfind
++++ b/Documentation/pps/ppsfind
@@ -0,0 +1,17 @@
+#!/bin/sh
+
+done
+
+exit 0
-Index: linux-2.6.23.17/Documentation/pps/ppstest.c
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/Documentation/pps/ppstest.c
++++ b/Documentation/pps/ppstest.c
@@ -0,0 +1,151 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+ return 0;
+}
-Index: linux-2.6.23.17/Documentation/pps/timepps.h
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/Documentation/pps/timepps.h
++++ b/Documentation/pps/timepps.h
@@ -0,0 +1,193 @@
+/*
+ * timepps.h -- PPS API main header
+}
+
+#endif /* _SYS_TIMEPPS_H_ */
-Index: linux-2.6.23.17/MAINTAINERS
-===================================================================
---- linux-2.6.23.17.orig/MAINTAINERS
-+++ linux-2.6.23.17/MAINTAINERS
-@@ -3011,6 +3011,13 @@ P: James Chapman
+--- a/MAINTAINERS
++++ b/MAINTAINERS
+@@ -3011,6 +3011,13 @@
M: jchapman@katalix.com
S: Maintained
PREEMPTIBLE KERNEL
P: Robert Love
M: rml@tech9.net
-Index: linux-2.6.23.17/drivers/Kconfig
-===================================================================
---- linux-2.6.23.17.orig/drivers/Kconfig
-+++ linux-2.6.23.17/drivers/Kconfig
-@@ -52,6 +52,8 @@ source "drivers/i2c/Kconfig"
+--- a/drivers/Kconfig
++++ b/drivers/Kconfig
+@@ -52,6 +52,8 @@
source "drivers/spi/Kconfig"
source "drivers/w1/Kconfig"
source "drivers/power/Kconfig"
-Index: linux-2.6.23.17/drivers/Makefile
-===================================================================
---- linux-2.6.23.17.orig/drivers/Makefile
-+++ linux-2.6.23.17/drivers/Makefile
-@@ -63,6 +63,7 @@ obj-$(CONFIG_INPUT) += input/
+--- a/drivers/Makefile
++++ b/drivers/Makefile
+@@ -63,6 +63,7 @@
obj-$(CONFIG_I2O) += message/
obj-$(CONFIG_RTC_LIB) += rtc/
obj-y += i2c/
obj-$(CONFIG_W1) += w1/
obj-$(CONFIG_POWER_SUPPLY) += power/
obj-$(CONFIG_HWMON) += hwmon/
-Index: linux-2.6.23.17/drivers/char/lp.c
-===================================================================
---- linux-2.6.23.17.orig/drivers/char/lp.c
-+++ linux-2.6.23.17/drivers/char/lp.c
-@@ -746,6 +746,27 @@ static struct console lpcons = {
+--- a/drivers/char/lp.c
++++ b/drivers/char/lp.c
+@@ -746,6 +746,27 @@
#endif /* console on line printer */
/* --- initialisation code ------------------------------------- */
static int parport_nr[LP_NO] = { [0 ... LP_NO-1] = LP_PARPORT_UNSPEC };
-@@ -817,6 +838,38 @@ static int lp_register(int nr, struct pa
+@@ -817,6 +838,38 @@
}
#endif
return 0;
}
-@@ -860,6 +913,14 @@ static void lp_detach (struct parport *p
+@@ -860,6 +913,14 @@
console_registered = NULL;
}
#endif /* CONFIG_LP_CONSOLE */
}
static struct parport_driver lp_driver = {
-Index: linux-2.6.23.17/drivers/pps/Kconfig
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/drivers/pps/Kconfig
++++ b/drivers/pps/Kconfig
@@ -0,0 +1,34 @@
+#
+# PPS support configuration
+source drivers/pps/clients/Kconfig
+
+endmenu
-Index: linux-2.6.23.17/drivers/pps/Makefile
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/drivers/pps/Makefile
++++ b/drivers/pps/Makefile
@@ -0,0 +1,11 @@
+#
+# Makefile for the PPS core.
+ifeq ($(CONFIG_PPS_DEBUG),y)
+EXTRA_CFLAGS += -DDEBUG
+endif
-Index: linux-2.6.23.17/drivers/pps/clients/Kconfig
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/drivers/pps/clients/Kconfig
++++ b/drivers/pps/clients/Kconfig
@@ -0,0 +1,38 @@
+#
+# PPS clients configuration
+ with the interrupt pin of your parallel port.
+
+endif
-Index: linux-2.6.23.17/drivers/pps/clients/Makefile
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/drivers/pps/clients/Makefile
++++ b/drivers/pps/clients/Makefile
@@ -0,0 +1,9 @@
+#
+# Makefile for PPS clients.
+ifeq ($(CONFIG_PPS_DEBUG),y)
+EXTRA_CFLAGS += -DDEBUG
+endif
-Index: linux-2.6.23.17/drivers/pps/clients/ktimer.c
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/drivers/pps/clients/ktimer.c
++++ b/drivers/pps/clients/ktimer.c
@@ -0,0 +1,114 @@
+/*
+ * ktimer.c -- kernel timer test client
+MODULE_AUTHOR("Rodolfo Giometti <giometti@linux.it>");
+MODULE_DESCRIPTION("dummy PPS source by using a kernel timer (just for debug)");
+MODULE_LICENSE("GPL");
-Index: linux-2.6.23.17/drivers/pps/kapi.c
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/drivers/pps/kapi.c
++++ b/drivers/pps/kapi.c
@@ -0,0 +1,271 @@
+/*
+ * kapi.c -- kernel API
+ spin_unlock_irqrestore(&idr_lock, flags);
+}
+EXPORT_SYMBOL(pps_event);
-Index: linux-2.6.23.17/drivers/pps/pps.c
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/drivers/pps/pps.c
++++ b/drivers/pps/pps.c
@@ -0,0 +1,332 @@
+/*
+ * pps.c -- Main PPS support file
+MODULE_AUTHOR("Rodolfo Giometti <giometti@linux.it>");
+MODULE_DESCRIPTION("LinuxPPS support (RFC 2783) - ver. " PPS_VERSION);
+MODULE_LICENSE("GPL");
-Index: linux-2.6.23.17/drivers/pps/sysfs.c
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/drivers/pps/sysfs.c
++++ b/drivers/pps/sysfs.c
@@ -0,0 +1,124 @@
+/*
+ * sysfs.c -- sysfs support
+
+ return 0;
+}
-Index: linux-2.6.23.17/drivers/serial/8250.c
-===================================================================
---- linux-2.6.23.17.orig/drivers/serial/8250.c
-+++ linux-2.6.23.17/drivers/serial/8250.c
-@@ -2118,6 +2118,8 @@ serial8250_set_termios(struct uart_port
+--- a/drivers/serial/8250.c
++++ b/drivers/serial/8250.c
+@@ -2118,6 +2118,8 @@
up->ier |= UART_IER_MSI;
if (up->capabilities & UART_CAP_UUE)
up->ier |= UART_IER_UUE | UART_IER_RTOIE;
serial_out(up, UART_IER, up->ier);
-Index: linux-2.6.23.17/drivers/serial/serial_core.c
-===================================================================
---- linux-2.6.23.17.orig/drivers/serial/serial_core.c
-+++ linux-2.6.23.17/drivers/serial/serial_core.c
+--- a/drivers/serial/serial_core.c
++++ b/drivers/serial/serial_core.c
@@ -33,6 +33,7 @@
#include <linux/serial.h> /* for serial_state and serial_icounter_struct */
#include <linux/delay.h>
#include <asm/irq.h>
#include <asm/uaccess.h>
-@@ -633,6 +634,54 @@ static int uart_get_info(struct uart_sta
+@@ -633,6 +634,54 @@
return 0;
}
static int uart_set_info(struct uart_state *state,
struct serial_struct __user *newinfo)
{
-@@ -807,11 +856,19 @@ static int uart_set_info(struct uart_sta
+@@ -807,11 +856,19 @@
(port->flags & UPF_LOW_LATENCY) ? 1 : 0;
check_and_exit:
old_custom_divisor != port->custom_divisor) {
/*
* If they're setting up a custom divisor or speed,
-@@ -2110,6 +2167,12 @@ uart_configure_port(struct uart_driver *
+@@ -2110,6 +2167,12 @@
port->ops->config_port(port, flags);
}
if (port->type != PORT_UNKNOWN) {
unsigned long flags;
-@@ -2359,6 +2422,12 @@ int uart_remove_one_port(struct uart_dri
+@@ -2359,6 +2422,12 @@
mutex_unlock(&state->mutex);
/*
* Remove the devices from the tty layer
*/
tty_unregister_device(drv->tty_driver, port->line);
-Index: linux-2.6.23.17/include/linux/Kbuild
-===================================================================
---- linux-2.6.23.17.orig/include/linux/Kbuild
-+++ linux-2.6.23.17/include/linux/Kbuild
-@@ -295,6 +295,7 @@ unifdef-y += pmu.h
+--- a/include/linux/Kbuild
++++ b/include/linux/Kbuild
+@@ -295,6 +295,7 @@
unifdef-y += poll.h
unifdef-y += ppp_defs.h
unifdef-y += ppp-comp.h
unifdef-y += ptrace.h
unifdef-y += qnx4_fs.h
unifdef-y += quota.h
-Index: linux-2.6.23.17/include/linux/parport.h
-===================================================================
---- linux-2.6.23.17.orig/include/linux/parport.h
-+++ linux-2.6.23.17/include/linux/parport.h
-@@ -100,6 +100,7 @@ typedef enum {
+--- a/include/linux/parport.h
++++ b/include/linux/parport.h
+@@ -100,6 +100,7 @@
#include <linux/proc_fs.h>
#include <linux/spinlock.h>
#include <linux/wait.h>
#include <asm/system.h>
#include <asm/ptrace.h>
#include <asm/semaphore.h>
-@@ -327,6 +328,11 @@ struct parport {
+@@ -327,6 +328,11 @@
struct list_head full_list;
struct parport *slaves[3];
};
#define DEFAULT_SPIN_TIME 500 /* us */
-@@ -517,6 +523,12 @@ extern int parport_daisy_select (struct
+@@ -517,6 +523,12 @@
/* Lowlevel drivers _can_ call this support function to handle irqs. */
static __inline__ void parport_generic_irq(int irq, struct parport *port)
{
parport_ieee1284_interrupt (irq, port);
read_lock(&port->cad_lock);
if (port->cad && port->cad->irq_func)
-Index: linux-2.6.23.17/include/linux/pps.h
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/include/linux/pps.h
++++ b/include/linux/pps.h
@@ -0,0 +1,196 @@
+/*
+ * pps.h -- PPS API kernel header.
+#endif /* __KERNEL__ */
+
+#endif /* _PPS_H_ */
-Index: linux-2.6.23.17/include/linux/serial_core.h
-===================================================================
---- linux-2.6.23.17.orig/include/linux/serial_core.h
-+++ linux-2.6.23.17/include/linux/serial_core.h
+--- a/include/linux/serial_core.h
++++ b/include/linux/serial_core.h
@@ -157,6 +157,7 @@
#include <linux/tty.h>
#include <linux/mutex.h>
struct uart_port;
struct uart_info;
-@@ -236,6 +237,9 @@ struct uart_port {
+@@ -236,6 +237,9 @@
unsigned char regshift; /* reg offset shift */
unsigned char iotype; /* io access style */
unsigned char unused1;
#define UPIO_PORT (0)
#define UPIO_HUB6 (1)
-@@ -280,7 +284,8 @@ struct uart_port {
+@@ -280,7 +284,8 @@
#define UPF_IOREMAP ((__force upf_t) (1 << 31))
#define UPF_CHANGE_MASK ((__force upf_t) (0x17fff))
unsigned int mctrl; /* current modem ctrl settings */
unsigned int timeout; /* character-based timeout */
-@@ -312,6 +317,10 @@ struct uart_state {
+@@ -312,6 +317,10 @@
struct uart_info *info;
struct uart_port *port;
struct mutex mutex;
};
-@@ -476,13 +485,22 @@ uart_handle_dcd_change(struct uart_port
+@@ -476,13 +485,22 @@
{
struct uart_info *info = port->info;
--mb
-Index: linux-2.6.23.17/drivers/mmc/host/Kconfig
-===================================================================
---- linux-2.6.23.17.orig/drivers/mmc/host/Kconfig
-+++ linux-2.6.23.17/drivers/mmc/host/Kconfig
-@@ -100,3 +100,16 @@ config MMC_TIFM_SD
+--- a/drivers/mmc/host/Kconfig
++++ b/drivers/mmc/host/Kconfig
+@@ -100,3 +100,16 @@
To compile this driver as a module, choose M here: the
module will be called tifm_sd.
+
+ If unsure, or if your system has no SPI master driver, say N.
+
-Index: linux-2.6.23.17/drivers/mmc/host/Makefile
-===================================================================
---- linux-2.6.23.17.orig/drivers/mmc/host/Makefile
-+++ linux-2.6.23.17/drivers/mmc/host/Makefile
-@@ -15,4 +15,5 @@ obj-$(CONFIG_MMC_AU1X) += au1xmmc.o
+--- a/drivers/mmc/host/Makefile
++++ b/drivers/mmc/host/Makefile
+@@ -15,4 +15,5 @@
obj-$(CONFIG_MMC_OMAP) += omap.o
obj-$(CONFIG_MMC_AT91) += at91_mci.o
obj-$(CONFIG_MMC_TIFM_SD) += tifm_sd.o
+obj-$(CONFIG_MMC_SPI) += mmc_spi.o
-Index: linux-2.6.23.17/drivers/mmc/host/mmc_spi.c
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/drivers/mmc/host/mmc_spi.c
++++ b/drivers/mmc/host/mmc_spi.c
@@ -0,0 +1,1419 @@
+/*
+ * mmc_spi.c - Access SD/MMC cards through SPI master controllers
+ "Hans-Peter Nilsson, Jan Nikitenko");
+MODULE_DESCRIPTION("SPI SD/MMC host driver");
+MODULE_LICENSE("GPL");
-Index: linux-2.6.23.17/include/linux/spi/mmc_spi.h
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/include/linux/spi/mmc_spi.h
++++ b/include/linux/spi/mmc_spi.h
@@ -0,0 +1,33 @@
+#ifndef __LINUX_SPI_MMC_SPI_H
+#define __LINUX_SPI_MMC_SPI_H
+};
+
+#endif /* __LINUX_SPI_MMC_SPI_H */
-Index: linux-2.6.23.17/drivers/mmc/core/bus.c
-===================================================================
---- linux-2.6.23.17.orig/drivers/mmc/core/bus.c
-+++ linux-2.6.23.17/drivers/mmc/core/bus.c
+--- a/drivers/mmc/core/bus.c
++++ b/drivers/mmc/core/bus.c
@@ -19,6 +19,7 @@
#include "sysfs.h"
#include "bus.h"
#define dev_to_mmc_card(d) container_of(d, struct mmc_card, dev)
-@@ -34,6 +35,8 @@ static ssize_t mmc_type_show(struct devi
+@@ -34,6 +35,8 @@
return sprintf(buf, "MMC\n");
case MMC_TYPE_SD:
return sprintf(buf, "SD\n");
default:
return -EFAULT;
}
-@@ -55,36 +58,37 @@ static int mmc_bus_match(struct device *
+@@ -55,36 +58,37 @@
}
static int
}
static int mmc_bus_probe(struct device *dev)
-@@ -176,6 +180,11 @@ static void mmc_release_card(struct devi
+@@ -176,6 +180,11 @@
{
struct mmc_card *card = dev_to_mmc_card(dev);
kfree(card);
}
-@@ -221,15 +230,25 @@ int mmc_add_card(struct mmc_card *card)
+@@ -221,15 +230,25 @@
if (mmc_card_blockaddr(card))
type = "SDHC";
break;
card->dev.uevent_suppress = 1;
-@@ -261,8 +280,13 @@ int mmc_add_card(struct mmc_card *card)
+@@ -261,8 +280,13 @@
void mmc_remove_card(struct mmc_card *card)
{
if (mmc_card_present(card)) {
if (card->host->bus_ops->sysfs_remove)
card->host->bus_ops->sysfs_remove(card->host, card);
-Index: linux-2.6.23.17/drivers/mmc/core/core.c
-===================================================================
---- linux-2.6.23.17.orig/drivers/mmc/core/core.c
-+++ linux-2.6.23.17/drivers/mmc/core/core.c
+--- a/drivers/mmc/core/core.c
++++ b/drivers/mmc/core/core.c
@@ -18,7 +18,7 @@
#include <linux/delay.h>
#include <linux/pagemap.h>
* Internal function. Schedule delayed work in the MMC work queue.
*/
static int mmc_schedule_delayed_work(struct delayed_work *work,
-@@ -68,6 +79,11 @@ void mmc_request_done(struct mmc_host *h
+@@ -68,6 +79,11 @@
struct mmc_command *cmd = mrq->cmd;
int err = cmd->error;
if (err && cmd->retries) {
pr_debug("%s: req failed (CMD%u): %d, retrying...\n",
mmc_hostname(host), cmd->opcode, err);
-@@ -76,6 +92,8 @@ void mmc_request_done(struct mmc_host *h
+@@ -76,6 +92,8 @@
cmd->error = 0;
host->ops->request(host, mrq);
} else {
pr_debug("%s: req done (CMD%u): %d: %08x %08x %08x %08x\n",
mmc_hostname(host), cmd->opcode, err,
cmd->resp[0], cmd->resp[1],
-@@ -118,7 +136,7 @@ mmc_start_request(struct mmc_host *host,
+@@ -118,7 +136,7 @@
"tsac %d ms nsac %d\n",
mmc_hostname(host), mrq->data->blksz,
mrq->data->blocks, mrq->data->flags,
mrq->data->timeout_clks);
}
-@@ -130,6 +148,8 @@ mmc_start_request(struct mmc_host *host,
+@@ -130,6 +148,8 @@
WARN_ON(!host->claimed);
mrq->cmd->error = 0;
mrq->cmd->mrq = mrq;
if (mrq->data) {
-@@ -199,7 +219,7 @@ int mmc_wait_for_cmd(struct mmc_host *ho
+@@ -199,7 +219,7 @@
{
struct mmc_request mrq;
memset(&mrq, 0, sizeof(struct mmc_request));
-@@ -220,17 +240,24 @@ EXPORT_SYMBOL(mmc_wait_for_cmd);
+@@ -220,17 +240,24 @@
* mmc_set_data_timeout - set the timeout for a data command
* @data: data phase for command
* @card: the MMC card associated with the data transfer
* SD cards use a 100 multiplier rather than 10
*/
mult = mmc_card_sd(card) ? 100 : 10;
-@@ -239,7 +266,7 @@ void mmc_set_data_timeout(struct mmc_dat
+@@ -239,7 +266,7 @@
* Scale up the multiplier (and therefore the timeout) by
* the r2w factor for writes.
*/
mult <<= card->csd.r2w_factor;
data->timeout_ns = card->csd.tacc_ns * mult;
-@@ -255,7 +282,7 @@ void mmc_set_data_timeout(struct mmc_dat
+@@ -255,7 +282,7 @@
timeout_us += data->timeout_clks * 1000 /
(card->host->ios.clock / 1000);
limit_us = 250000;
else
limit_us = 100000;
-@@ -272,15 +299,20 @@ void mmc_set_data_timeout(struct mmc_dat
+@@ -272,15 +299,20 @@
EXPORT_SYMBOL(mmc_set_data_timeout);
/**
might_sleep();
-@@ -288,19 +320,24 @@ void mmc_claim_host(struct mmc_host *hos
+@@ -288,19 +320,24 @@
spin_lock_irqsave(&host->lock, flags);
while (1) {
set_current_state(TASK_UNINTERRUPTIBLE);
/**
* mmc_release_host - release a host
-@@ -313,7 +350,7 @@ void mmc_release_host(struct mmc_host *h
+@@ -313,7 +350,7 @@
{
unsigned long flags;
spin_lock_irqsave(&host->lock, flags);
host->claimed = 0;
-@@ -433,19 +470,32 @@ static void mmc_power_up(struct mmc_host
+@@ -433,19 +470,32 @@
int bit = fls(host->ocr_avail) - 1;
host->ios.vdd = bit;
mmc_delay(2);
}
-@@ -453,8 +503,10 @@ static void mmc_power_off(struct mmc_hos
+@@ -453,8 +503,10 @@
{
host->ios.clock = 0;
host->ios.vdd = 0;
host->ios.power_mode = MMC_POWER_OFF;
host->ios.bus_width = MMC_BUS_WIDTH_1;
host->ios.timing = MMC_TIMING_LEGACY;
-@@ -511,7 +563,7 @@ void mmc_attach_bus(struct mmc_host *hos
+@@ -511,7 +563,7 @@
BUG_ON(!host);
BUG_ON(!ops);
spin_lock_irqsave(&host->lock, flags);
-@@ -535,8 +587,8 @@ void mmc_detach_bus(struct mmc_host *hos
+@@ -535,8 +587,8 @@
BUG_ON(!host);
spin_lock_irqsave(&host->lock, flags);
-@@ -564,7 +616,7 @@ void mmc_detect_change(struct mmc_host *
+@@ -564,7 +616,7 @@
#ifdef CONFIG_MMC_DEBUG
unsigned long flags;
spin_lock_irqsave(&host->lock, flags);
spin_unlock_irqrestore(&host->lock, flags);
#endif
-@@ -597,24 +649,38 @@ void mmc_rescan(struct work_struct *work
+@@ -597,24 +649,38 @@
mmc_send_if_cond(host, host->ocr_avail);
} else {
if (host->bus_ops->detect && !host->bus_dead)
host->bus_ops->detect(host);
-@@ -725,22 +791,38 @@ static int __init mmc_init(void)
+@@ -725,22 +791,38 @@
return -ENOMEM;
ret = mmc_register_bus();
module_exit(mmc_exit);
MODULE_LICENSE("GPL");
-Index: linux-2.6.23.17/drivers/mmc/core/core.h
-===================================================================
---- linux-2.6.23.17.orig/drivers/mmc/core/core.h
-+++ linux-2.6.23.17/drivers/mmc/core/core.h
-@@ -48,5 +48,7 @@ void mmc_rescan(struct work_struct *work
+--- a/drivers/mmc/core/core.h
++++ b/drivers/mmc/core/core.h
+@@ -48,5 +48,7 @@
void mmc_start_host(struct mmc_host *host);
void mmc_stop_host(struct mmc_host *host);
+
#endif
-Index: linux-2.6.23.17/drivers/mmc/core/host.c
-===================================================================
---- linux-2.6.23.17.orig/drivers/mmc/core/host.c
-+++ linux-2.6.23.17/drivers/mmc/core/host.c
+--- a/drivers/mmc/core/host.c
++++ b/drivers/mmc/core/host.c
@@ -15,6 +15,7 @@
#include <linux/err.h>
#include <linux/idr.h>
#include <linux/mmc/host.h>
-@@ -100,6 +101,9 @@ int mmc_add_host(struct mmc_host *host)
+@@ -100,6 +101,9 @@
{
int err;
if (!idr_pre_get(&mmc_host_idr, GFP_KERNEL))
return -ENOMEM;
-@@ -112,6 +116,8 @@ int mmc_add_host(struct mmc_host *host)
+@@ -112,6 +116,8 @@
snprintf(host->class_dev.bus_id, BUS_ID_SIZE,
"mmc%d", host->index);
err = device_add(&host->class_dev);
if (err)
return err;
-@@ -137,6 +143,8 @@ void mmc_remove_host(struct mmc_host *ho
+@@ -137,6 +143,8 @@
device_del(&host->class_dev);
spin_lock(&mmc_host_lock);
idr_remove(&mmc_host_idr, host->index);
spin_unlock(&mmc_host_lock);
-Index: linux-2.6.23.17/drivers/mmc/core/mmc.c
-===================================================================
---- linux-2.6.23.17.orig/drivers/mmc/core/mmc.c
-+++ linux-2.6.23.17/drivers/mmc/core/mmc.c
-@@ -161,13 +161,12 @@ static int mmc_read_ext_csd(struct mmc_c
+--- a/drivers/mmc/core/mmc.c
++++ b/drivers/mmc/core/mmc.c
+@@ -161,13 +161,12 @@
{
int err;
u8 *ext_csd;
/*
* As the ext_csd is so large and mostly unused, we don't store the
-@@ -176,13 +175,19 @@ static int mmc_read_ext_csd(struct mmc_c
+@@ -176,13 +175,19 @@
ext_csd = kmalloc(512, GFP_KERNEL);
if (!ext_csd) {
printk(KERN_ERR "%s: could not allocate a buffer to "
/*
* High capacity cards should have this "magic" size
* stored in their CSD.
-@@ -197,18 +202,30 @@ static int mmc_read_ext_csd(struct mmc_c
+@@ -197,18 +202,30 @@
"EXT_CSD, performance might "
"suffer.\n",
mmc_hostname(card->host));
switch (ext_csd[EXT_CSD_CARD_TYPE]) {
case EXT_CSD_CARD_TYPE_52 | EXT_CSD_CARD_TYPE_26:
-@@ -246,7 +263,7 @@ static int mmc_init_card(struct mmc_host
+@@ -246,7 +263,7 @@
unsigned int max_dtr;
BUG_ON(!host);
/*
* Since we're changing the OCR value, we seem to
-@@ -258,19 +275,33 @@ static int mmc_init_card(struct mmc_host
+@@ -258,19 +275,33 @@
/* The extra bit indicates that we support high capacity */
err = mmc_send_op_cond(host, ocr | (1 << 30), NULL);
card = oldcard;
} else {
-@@ -278,8 +309,10 @@ static int mmc_init_card(struct mmc_host
+@@ -278,8 +309,10 @@
* Allocate card structure.
*/
card = mmc_alloc_card(host);
card->type = MMC_TYPE_MMC;
card->rca = 1;
-@@ -287,43 +320,47 @@ static int mmc_init_card(struct mmc_host
+@@ -287,43 +320,47 @@
}
/*
goto free_card;
}
-@@ -334,7 +371,7 @@ static int mmc_init_card(struct mmc_host
+@@ -334,7 +371,7 @@
(host->caps & MMC_CAP_MMC_HIGHSPEED)) {
err = mmc_switch(card, EXT_CSD_CMD_SET_NORMAL,
EXT_CSD_HS_TIMING, 1);
goto free_card;
mmc_card_set_highspeed(card);
-@@ -363,7 +400,7 @@ static int mmc_init_card(struct mmc_host
+@@ -363,7 +400,7 @@
(host->caps & MMC_CAP_4_BIT_DATA)) {
err = mmc_switch(card, EXT_CSD_CMD_SET_NORMAL,
EXT_CSD_BUS_WIDTH, EXT_CSD_BUS_WIDTH_4);
goto free_card;
mmc_set_bus_width(card->host, MMC_BUS_WIDTH_4);
-@@ -372,14 +409,14 @@ static int mmc_init_card(struct mmc_host
+@@ -372,14 +409,14 @@
if (!oldcard)
host->card = card;
}
/*
-@@ -413,7 +450,7 @@ static void mmc_detect(struct mmc_host *
+@@ -413,7 +450,7 @@
mmc_release_host(host);
mmc_remove(host);
mmc_claim_host(host);
-@@ -480,7 +517,8 @@ static void mmc_suspend(struct mmc_host
+@@ -480,7 +517,8 @@
BUG_ON(!host->card);
mmc_claim_host(host);
host->card->state &= ~MMC_STATE_HIGHSPEED;
mmc_release_host(host);
}
-@@ -502,7 +540,7 @@ static void mmc_resume(struct mmc_host *
+@@ -502,7 +540,7 @@
err = mmc_init_card(host, host->ocr, host->card);
mmc_release_host(host);
mmc_remove(host);
mmc_claim_host(host);
-@@ -536,11 +574,20 @@ int mmc_attach_mmc(struct mmc_host *host
+@@ -536,11 +574,20 @@
int err;
BUG_ON(!host);
* Sanity check the voltages that the card claims to
* support.
*/
-@@ -565,7 +612,7 @@ int mmc_attach_mmc(struct mmc_host *host
+@@ -565,7 +612,7 @@
* Detect and init the card.
*/
err = mmc_init_card(host, host->ocr, NULL);
goto err;
mmc_release_host(host);
-@@ -587,6 +634,6 @@ err:
+@@ -587,6 +634,6 @@
printk(KERN_ERR "%s: error %d whilst initialising MMC card\n",
mmc_hostname(host), err);
+ return err;
}
-Index: linux-2.6.23.17/drivers/mmc/core/mmc_ops.c
-===================================================================
---- linux-2.6.23.17.orig/drivers/mmc/core/mmc_ops.c
-+++ linux-2.6.23.17/drivers/mmc/core/mmc_ops.c
+--- a/drivers/mmc/core/mmc_ops.c
++++ b/drivers/mmc/core/mmc_ops.c
@@ -10,7 +10,6 @@
*/
#include <linux/scatterlist.h>
#include <linux/mmc/host.h>
-@@ -40,10 +39,10 @@ static int _mmc_select_card(struct mmc_h
+@@ -40,10 +39,10 @@
}
err = mmc_wait_for_cmd(host, &cmd, MMC_CMD_RETRIES);
}
int mmc_select_card(struct mmc_card *card)
-@@ -63,23 +62,36 @@ int mmc_go_idle(struct mmc_host *host)
+@@ -63,23 +62,36 @@
int err;
struct mmc_command cmd;
return err;
}
-@@ -94,23 +106,33 @@ int mmc_send_op_cond(struct mmc_host *ho
+@@ -94,23 +106,33 @@
memset(&cmd, 0, sizeof(struct mmc_command));
cmd.opcode = MMC_SEND_OP_COND;
*rocr = cmd.resp[0];
return err;
-@@ -131,12 +153,12 @@ int mmc_all_send_cid(struct mmc_host *ho
+@@ -131,12 +153,12 @@
cmd.flags = MMC_RSP_R2 | MMC_CMD_BCR;
err = mmc_wait_for_cmd(host, &cmd, MMC_CMD_RETRIES);
}
int mmc_set_relative_addr(struct mmc_card *card)
-@@ -154,46 +176,52 @@ int mmc_set_relative_addr(struct mmc_car
+@@ -154,46 +176,52 @@
cmd.flags = MMC_RSP_R1 | MMC_CMD_AC;
err = mmc_wait_for_cmd(card->host, &cmd, MMC_CMD_RETRIES);
memset(&mrq, 0, sizeof(struct mmc_request));
memset(&cmd, 0, sizeof(struct mmc_command));
-@@ -202,28 +230,117 @@ int mmc_send_ext_csd(struct mmc_card *ca
+@@ -202,28 +230,117 @@
mrq.cmd = &cmd;
mrq.data = &data;
}
int mmc_switch(struct mmc_card *card, u8 set, u8 index, u8 value)
-@@ -241,13 +358,13 @@ int mmc_switch(struct mmc_card *card, u8
+@@ -241,13 +358,13 @@
(index << 16) |
(value << 8) |
set;
}
int mmc_send_status(struct mmc_card *card, u32 *status)
-@@ -261,16 +378,20 @@ int mmc_send_status(struct mmc_card *car
+@@ -261,16 +378,20 @@
memset(&cmd, 0, sizeof(struct mmc_command));
cmd.opcode = MMC_SEND_STATUS;
+ return 0;
}
-Index: linux-2.6.23.17/drivers/mmc/core/mmc_ops.h
-===================================================================
---- linux-2.6.23.17.orig/drivers/mmc/core/mmc_ops.h
-+++ linux-2.6.23.17/drivers/mmc/core/mmc_ops.h
-@@ -22,6 +22,9 @@ int mmc_send_csd(struct mmc_card *card,
+--- a/drivers/mmc/core/mmc_ops.h
++++ b/drivers/mmc/core/mmc_ops.h
+@@ -22,6 +22,9 @@
int mmc_send_ext_csd(struct mmc_card *card, u8 *ext_csd);
int mmc_switch(struct mmc_card *card, u8 set, u8 index, u8 value);
int mmc_send_status(struct mmc_card *card, u32 *status);
#endif
-Index: linux-2.6.23.17/drivers/mmc/core/sd.c
-===================================================================
---- linux-2.6.23.17.orig/drivers/mmc/core/sd.c
-+++ linux-2.6.23.17/drivers/mmc/core/sd.c
-@@ -166,8 +166,6 @@ static int mmc_decode_scr(struct mmc_car
+--- a/drivers/mmc/core/sd.c
++++ b/drivers/mmc/core/sd.c
+@@ -166,8 +166,6 @@
unsigned int scr_struct;
u32 resp[4];
resp[3] = card->raw_scr[1];
resp[2] = card->raw_scr[0];
-@@ -193,30 +191,38 @@ static int mmc_read_switch(struct mmc_ca
+@@ -193,30 +191,38 @@
u8 *status;
if (card->scr.sda_vsn < SCR_SPEC_VER_1)
goto out;
}
-@@ -238,28 +244,28 @@ static int mmc_switch_hs(struct mmc_card
+@@ -238,28 +244,28 @@
u8 *status;
if (card->scr.sda_vsn < SCR_SPEC_VER_1)
goto out;
if ((status[16] & 0xF) != 1) {
-@@ -292,7 +298,7 @@ static int mmc_sd_init_card(struct mmc_h
+@@ -292,7 +298,7 @@
unsigned int max_dtr;
BUG_ON(!host);
/*
* Since we're changing the OCR value, we seem to
-@@ -309,23 +315,37 @@ static int mmc_sd_init_card(struct mmc_h
+@@ -309,23 +315,37 @@
* block-addressed SDHC cards.
*/
err = mmc_send_if_cond(host, ocr);
card = oldcard;
} else {
-@@ -333,32 +353,36 @@ static int mmc_sd_init_card(struct mmc_h
+@@ -333,32 +353,36 @@
* Allocate card structure.
*/
card = mmc_alloc_card(host);
goto free_card;
mmc_decode_cid(card);
-@@ -367,16 +391,18 @@ static int mmc_sd_init_card(struct mmc_h
+@@ -367,16 +391,18 @@
/*
* Select card, as all following commands rely on that.
*/
goto free_card;
err = mmc_decode_scr(card);
-@@ -387,7 +413,7 @@ static int mmc_sd_init_card(struct mmc_h
+@@ -387,7 +413,7 @@
* Fetch switch information from card.
*/
err = mmc_read_switch(card);
goto free_card;
}
-@@ -395,7 +421,7 @@ static int mmc_sd_init_card(struct mmc_h
+@@ -395,7 +421,7 @@
* Attempt to change to high-speed (if supported)
*/
err = mmc_switch_hs(card);
goto free_card;
/*
-@@ -418,7 +444,7 @@ static int mmc_sd_init_card(struct mmc_h
+@@ -418,7 +444,7 @@
if ((host->caps & MMC_CAP_4_BIT_DATA) &&
(card->scr.bus_widths & SD_SCR_BUS_WIDTH_4)) {
err = mmc_app_set_bus_width(card, MMC_BUS_WIDTH_4);
goto free_card;
mmc_set_bus_width(host, MMC_BUS_WIDTH_4);
-@@ -442,14 +468,14 @@ static int mmc_sd_init_card(struct mmc_h
+@@ -442,14 +468,14 @@
if (!oldcard)
host->card = card;
}
/*
-@@ -483,7 +509,7 @@ static void mmc_sd_detect(struct mmc_hos
+@@ -483,7 +509,7 @@
mmc_release_host(host);
mmc_sd_remove(host);
mmc_claim_host(host);
-@@ -552,7 +578,8 @@ static void mmc_sd_suspend(struct mmc_ho
+@@ -552,7 +578,8 @@
BUG_ON(!host->card);
mmc_claim_host(host);
host->card->state &= ~MMC_STATE_HIGHSPEED;
mmc_release_host(host);
}
-@@ -574,7 +601,7 @@ static void mmc_sd_resume(struct mmc_hos
+@@ -574,7 +601,7 @@
err = mmc_sd_init_card(host, host->ocr, host->card);
mmc_release_host(host);
mmc_sd_remove(host);
mmc_claim_host(host);
-@@ -608,11 +635,22 @@ int mmc_attach_sd(struct mmc_host *host,
+@@ -608,11 +635,22 @@
int err;
BUG_ON(!host);
* Sanity check the voltages that the card claims to
* support.
*/
-@@ -644,7 +682,7 @@ int mmc_attach_sd(struct mmc_host *host,
+@@ -644,7 +682,7 @@
* Detect and init the card.
*/
err = mmc_sd_init_card(host, host->ocr, NULL);
goto err;
mmc_release_host(host);
-@@ -666,6 +704,6 @@ err:
+@@ -666,6 +704,6 @@
printk(KERN_ERR "%s: error %d whilst initialising SD card\n",
mmc_hostname(host), err);
+ return err;
}
-Index: linux-2.6.23.17/drivers/mmc/core/sd_ops.c
-===================================================================
---- linux-2.6.23.17.orig/drivers/mmc/core/sd_ops.c
-+++ linux-2.6.23.17/drivers/mmc/core/sd_ops.c
+--- a/drivers/mmc/core/sd_ops.c
++++ b/drivers/mmc/core/sd_ops.c
@@ -10,7 +10,6 @@
*/
#include <linux/scatterlist.h>
#include <linux/mmc/host.h>
-@@ -33,21 +32,21 @@ static int mmc_app_cmd(struct mmc_host *
+@@ -33,21 +32,21 @@
if (card) {
cmd.arg = card->rca << 16;
}
/**
-@@ -73,7 +72,7 @@ int mmc_wait_for_app_cmd(struct mmc_host
+@@ -73,7 +72,7 @@
BUG_ON(!cmd);
BUG_ON(retries < 0);
/*
* We have to resend MMC_APP_CMD for each attempt so
-@@ -83,8 +82,14 @@ int mmc_wait_for_app_cmd(struct mmc_host
+@@ -83,8 +82,14 @@
memset(&mrq, 0, sizeof(struct mmc_request));
err = mmc_app_cmd(host, card);
memset(&mrq, 0, sizeof(struct mmc_request));
-@@ -97,8 +102,14 @@ int mmc_wait_for_app_cmd(struct mmc_host
+@@ -97,8 +102,14 @@
mmc_wait_for_req(host, &mrq);
err = cmd->error;
}
return err;
-@@ -127,14 +138,14 @@ int mmc_app_set_bus_width(struct mmc_car
+@@ -127,14 +138,14 @@
cmd.arg = SD_BUS_WIDTH_4;
break;
default:
}
int mmc_send_app_op_cond(struct mmc_host *host, u32 ocr, u32 *rocr)
-@@ -147,23 +158,36 @@ int mmc_send_app_op_cond(struct mmc_host
+@@ -147,23 +158,36 @@
memset(&cmd, 0, sizeof(struct mmc_command));
cmd.opcode = SD_APP_OP_COND;
*rocr = cmd.resp[0];
return err;
-@@ -174,6 +198,7 @@ int mmc_send_if_cond(struct mmc_host *ho
+@@ -174,6 +198,7 @@
struct mmc_command cmd;
int err;
static const u8 test_pattern = 0xAA;
/*
* To support SD 2.0 cards, we must always invoke SD_SEND_IF_COND
-@@ -182,16 +207,21 @@ int mmc_send_if_cond(struct mmc_host *ho
+@@ -182,16 +207,21 @@
*/
cmd.opcode = SD_SEND_IF_COND;
cmd.arg = ((ocr & 0xFF8000) != 0) << 8 | test_pattern;
}
int mmc_send_relative_addr(struct mmc_host *host, unsigned int *rca)
-@@ -209,12 +239,12 @@ int mmc_send_relative_addr(struct mmc_ho
+@@ -209,12 +239,12 @@
cmd.flags = MMC_RSP_R6 | MMC_CMD_BCR;
err = mmc_wait_for_cmd(host, &cmd, MMC_CMD_RETRIES);
}
int mmc_app_send_scr(struct mmc_card *card, u32 *scr)
-@@ -229,8 +259,10 @@ int mmc_app_send_scr(struct mmc_card *ca
+@@ -229,8 +259,10 @@
BUG_ON(!card->host);
BUG_ON(!scr);
return err;
memset(&mrq, 0, sizeof(struct mmc_request));
-@@ -242,7 +274,7 @@ int mmc_app_send_scr(struct mmc_card *ca
+@@ -242,7 +274,7 @@
cmd.opcode = SD_APP_SEND_SCR;
cmd.arg = 0;
data.blksz = 8;
data.blocks = 1;
-@@ -252,19 +284,19 @@ int mmc_app_send_scr(struct mmc_card *ca
+@@ -252,19 +284,19 @@
sg_init_one(&sg, scr, 8);
}
int mmc_sd_switch(struct mmc_card *card, int mode, int group,
-@@ -278,6 +310,8 @@ int mmc_sd_switch(struct mmc_card *card,
+@@ -278,6 +310,8 @@
BUG_ON(!card);
BUG_ON(!card->host);
mode = !!mode;
value &= 0xF;
-@@ -292,7 +326,7 @@ int mmc_sd_switch(struct mmc_card *card,
+@@ -292,7 +326,7 @@
cmd.arg = mode << 31 | 0x00FFFFFF;
cmd.arg &= ~(0xF << (group * 4));
cmd.arg |= value << (group * 4);
data.blksz = 64;
data.blocks = 1;
-@@ -302,15 +336,15 @@ int mmc_sd_switch(struct mmc_card *card,
+@@ -302,15 +336,15 @@
sg_init_one(&sg, resp, 64);
+ return 0;
}
-Index: linux-2.6.23.17/drivers/mmc/core/sdio.c
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/drivers/mmc/core/sdio.c
++++ b/drivers/mmc/core/sdio.c
@@ -0,0 +1,395 @@
+/*
+ * linux/drivers/mmc/sdio.c
+ return err;
+}
+
-Index: linux-2.6.23.17/drivers/mmc/core/sdio_bus.c
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/drivers/mmc/core/sdio_bus.c
++++ b/drivers/mmc/core/sdio_bus.c
@@ -0,0 +1,265 @@
+/*
+ * linux/drivers/mmc/core/sdio_bus.c
+ put_device(&func->dev);
+}
+
-Index: linux-2.6.23.17/drivers/mmc/core/sdio_bus.h
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/drivers/mmc/core/sdio_bus.h
++++ b/drivers/mmc/core/sdio_bus.h
@@ -0,0 +1,22 @@
+/*
+ * linux/drivers/mmc/core/sdio_bus.h
+
+#endif
+
-Index: linux-2.6.23.17/drivers/mmc/core/sdio_cis.c
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/drivers/mmc/core/sdio_cis.c
++++ b/drivers/mmc/core/sdio_cis.c
@@ -0,0 +1,346 @@
+/*
+ * linux/drivers/mmc/core/sdio_cis.c
+ put_device(&func->card->dev);
+}
+
-Index: linux-2.6.23.17/drivers/mmc/core/sdio_cis.h
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/drivers/mmc/core/sdio_cis.h
++++ b/drivers/mmc/core/sdio_cis.h
@@ -0,0 +1,23 @@
+/*
+ * linux/drivers/mmc/core/sdio_cis.h
+void sdio_free_func_cis(struct sdio_func *func);
+
+#endif
-Index: linux-2.6.23.17/drivers/mmc/core/sdio_io.c
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/drivers/mmc/core/sdio_io.c
++++ b/drivers/mmc/core/sdio_io.c
@@ -0,0 +1,548 @@
+/*
+ * linux/drivers/mmc/core/sdio_io.c
+ *err_ret = ret;
+}
+EXPORT_SYMBOL_GPL(sdio_f0_writeb);
-Index: linux-2.6.23.17/drivers/mmc/core/sdio_irq.c
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/drivers/mmc/core/sdio_irq.c
++++ b/drivers/mmc/core/sdio_irq.c
@@ -0,0 +1,267 @@
+/*
+ * linux/drivers/mmc/core/sdio_irq.c
+}
+EXPORT_SYMBOL_GPL(sdio_release_irq);
+
-Index: linux-2.6.23.17/drivers/mmc/core/sdio_ops.c
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/drivers/mmc/core/sdio_ops.c
++++ b/drivers/mmc/core/sdio_ops.c
@@ -0,0 +1,175 @@
+/*
+ * linux/drivers/mmc/sdio_ops.c
+ return 0;
+}
+
-Index: linux-2.6.23.17/drivers/mmc/core/sdio_ops.h
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/drivers/mmc/core/sdio_ops.h
++++ b/drivers/mmc/core/sdio_ops.h
@@ -0,0 +1,22 @@
+/*
+ * linux/drivers/mmc/sdio_ops.c
+
+#endif
+
-Index: linux-2.6.23.17/include/linux/mmc/card.h
-===================================================================
---- linux-2.6.23.17.orig/include/linux/mmc/card.h
-+++ linux-2.6.23.17/include/linux/mmc/card.h
-@@ -55,7 +55,28 @@ struct sd_switch_caps {
+--- a/include/linux/mmc/card.h
++++ b/include/linux/mmc/card.h
+@@ -55,7 +55,28 @@
unsigned int hs_max_dtr;
};
/*
* MMC device
-@@ -67,11 +88,13 @@ struct mmc_card {
+@@ -67,11 +88,13 @@
unsigned int type; /* card type */
#define MMC_TYPE_MMC 0 /* MMC card */
#define MMC_TYPE_SD 1 /* SD card */
u32 raw_cid[4]; /* raw card CID */
u32 raw_csd[4]; /* raw card CSD */
u32 raw_scr[2]; /* raw card SCR */
-@@ -80,10 +103,19 @@ struct mmc_card {
+@@ -80,10 +103,19 @@
struct mmc_ext_csd ext_csd; /* mmc v4 extended card specific */
struct sd_scr scr; /* extra SD information */
struct sd_switch_caps sw_caps; /* switch (CMD6) caps */
#define mmc_card_present(c) ((c)->state & MMC_STATE_PRESENT)
#define mmc_card_readonly(c) ((c)->state & MMC_STATE_READONLY)
-Index: linux-2.6.23.17/include/linux/mmc/core.h
-===================================================================
---- linux-2.6.23.17.orig/include/linux/mmc/core.h
-+++ linux-2.6.23.17/include/linux/mmc/core.h
-@@ -25,14 +25,20 @@ struct mmc_command {
+--- a/include/linux/mmc/core.h
++++ b/include/linux/mmc/core.h
+@@ -25,14 +25,20 @@
#define MMC_RSP_CRC (1 << 2) /* expect valid crc */
#define MMC_RSP_BUSY (1 << 3) /* card may send busy */
#define MMC_RSP_OPCODE (1 << 4) /* response contains opcode */
* patterns of the above flags. One additional valid pattern
* is all zeros, which means we don't expect a response.
*/
-@@ -41,12 +47,30 @@ struct mmc_command {
+@@ -41,12 +47,30 @@
#define MMC_RSP_R1B (MMC_RSP_PRESENT|MMC_RSP_CRC|MMC_RSP_OPCODE|MMC_RSP_BUSY)
#define MMC_RSP_R2 (MMC_RSP_PRESENT|MMC_RSP_136|MMC_RSP_CRC)
#define MMC_RSP_R3 (MMC_RSP_PRESENT)
* These are the command types.
*/
#define mmc_cmd_type(cmd) ((cmd)->flags & MMC_CMD_MASK)
-@@ -54,12 +78,19 @@ struct mmc_command {
+@@ -54,12 +78,19 @@
unsigned int retries; /* max number of retries */
unsigned int error; /* command error */
struct mmc_data *data; /* data segment associated with cmd */
struct mmc_request *mrq; /* associated request */
-@@ -76,7 +107,6 @@ struct mmc_data {
+@@ -76,7 +107,6 @@
#define MMC_DATA_WRITE (1 << 8)
#define MMC_DATA_READ (1 << 9)
#define MMC_DATA_STREAM (1 << 10)
unsigned int bytes_xfered;
-@@ -104,9 +134,20 @@ extern int mmc_wait_for_cmd(struct mmc_h
+@@ -104,9 +134,20 @@
extern int mmc_wait_for_app_cmd(struct mmc_host *, struct mmc_card *,
struct mmc_command *, int);
+}
+
#endif
-Index: linux-2.6.23.17/include/linux/mmc/host.h
-===================================================================
---- linux-2.6.23.17.orig/include/linux/mmc/host.h
-+++ linux-2.6.23.17/include/linux/mmc/host.h
+--- a/include/linux/mmc/host.h
++++ b/include/linux/mmc/host.h
@@ -10,6 +10,8 @@
#ifndef LINUX_MMC_HOST_H
#define LINUX_MMC_HOST_H
#include <linux/mmc/core.h>
struct mmc_ios {
-@@ -51,6 +53,7 @@ struct mmc_host_ops {
+@@ -51,6 +53,7 @@
void (*request)(struct mmc_host *host, struct mmc_request *req);
void (*set_ios)(struct mmc_host *host, struct mmc_ios *ios);
int (*get_ro)(struct mmc_host *host);
};
struct mmc_card;
-@@ -87,9 +90,10 @@ struct mmc_host {
+@@ -87,9 +90,10 @@
#define MMC_CAP_4_BIT_DATA (1 << 0) /* Can the host do 4 bit transfers */
#define MMC_CAP_MULTIWRITE (1 << 1) /* Can accurately report bytes sent to card on error */
/* host specific block data */
unsigned int max_seg_size; /* see blk_queue_max_segment_size */
-@@ -106,23 +110,30 @@ struct mmc_host {
+@@ -106,23 +110,30 @@
struct mmc_ios ios; /* current io bus settings */
u32 ocr; /* the current OCR setting */
unsigned long private[0] ____cacheline_aligned;
};
-@@ -137,6 +148,8 @@ static inline void *mmc_priv(struct mmc_
+@@ -137,6 +148,8 @@
return (void *)host->private;
}
#define mmc_dev(x) ((x)->parent)
#define mmc_classdev(x) (&(x)->class_dev)
#define mmc_hostname(x) ((x)->class_dev.bus_id)
-@@ -147,5 +160,11 @@ extern int mmc_resume_host(struct mmc_ho
+@@ -147,5 +160,11 @@
extern void mmc_detect_change(struct mmc_host *, unsigned long delay);
extern void mmc_request_done(struct mmc_host *, struct mmc_request *);
+
#endif
-Index: linux-2.6.23.17/include/linux/mmc/mmc.h
-===================================================================
---- linux-2.6.23.17.orig/include/linux/mmc/mmc.h
-+++ linux-2.6.23.17/include/linux/mmc/mmc.h
+--- a/include/linux/mmc/mmc.h
++++ b/include/linux/mmc/mmc.h
@@ -27,7 +27,7 @@
/* Standard MMC commands (4.1) type argument response */
/* These are unpacked versions of the actual responses */
struct _mmc_csd {
-@@ -182,6 +207,7 @@ struct _mmc_csd {
+@@ -182,6 +207,7 @@
*/
#define CCC_BASIC (1<<0) /* (0) Basic protocol functions */
/* (CMD0,1,2,3,4,7,9,10,12,13,15) */
#define CCC_STREAM_READ (1<<1) /* (1) Stream read commands */
/* (CMD11) */
#define CCC_BLOCK_READ (1<<2) /* (2) Block read commands */
-@@ -227,6 +253,7 @@ struct _mmc_csd {
+@@ -227,6 +253,7 @@
#define EXT_CSD_BUS_WIDTH 183 /* R/W */
#define EXT_CSD_HS_TIMING 185 /* R/W */
#define EXT_CSD_CARD_TYPE 196 /* RO */
#define EXT_CSD_SEC_CNT 212 /* RO, 4 bytes */
/*
-Index: linux-2.6.23.17/include/linux/mmc/sdio.h
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/include/linux/mmc/sdio.h
++++ b/include/linux/mmc/sdio.h
@@ -0,0 +1,159 @@
+/*
+ * include/linux/mmc/sdio.h
+
+#endif
+
-Index: linux-2.6.23.17/include/linux/mmc/sdio_func.h
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/include/linux/mmc/sdio_func.h
++++ b/include/linux/mmc/sdio_func.h
@@ -0,0 +1,153 @@
+/*
+ * include/linux/mmc/sdio_func.h
+
+#endif
+
-Index: linux-2.6.23.17/include/linux/mmc/sdio_ids.h
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/include/linux/mmc/sdio_ids.h
++++ b/include/linux/mmc/sdio_ids.h
@@ -0,0 +1,29 @@
+/*
+ * SDIO Classes, Interface Types, Manufacturer IDs, etc.
+#define SDIO_DEVICE_ID_MARVELL_LIBERTAS 0x9103
+
+#endif
-Index: linux-2.6.23.17/include/linux/mod_devicetable.h
-===================================================================
---- linux-2.6.23.17.orig/include/linux/mod_devicetable.h
-+++ linux-2.6.23.17/include/linux/mod_devicetable.h
-@@ -22,6 +22,18 @@ struct pci_device_id {
+--- a/include/linux/mod_devicetable.h
++++ b/include/linux/mod_devicetable.h
+@@ -22,6 +22,18 @@
};
#define IEEE1394_MATCH_VENDOR_ID 0x0001
#define IEEE1394_MATCH_MODEL_ID 0x0002
#define IEEE1394_MATCH_SPECIFIER_ID 0x0004
-Index: linux-2.6.23.17/drivers/mmc/card/Kconfig
-===================================================================
---- linux-2.6.23.17.orig/drivers/mmc/card/Kconfig
-+++ linux-2.6.23.17/drivers/mmc/card/Kconfig
-@@ -32,3 +32,10 @@ config MMC_BLOCK_BOUNCE
+--- a/drivers/mmc/card/Kconfig
++++ b/drivers/mmc/card/Kconfig
+@@ -32,3 +32,10 @@
If unsure, say Y here.
+ SDIO function driver for SDIO cards that implements the UART
+ class, as well as the GPS class which appears like a UART.
+
-Index: linux-2.6.23.17/drivers/mmc/card/Makefile
-===================================================================
---- linux-2.6.23.17.orig/drivers/mmc/card/Makefile
-+++ linux-2.6.23.17/drivers/mmc/card/Makefile
-@@ -9,3 +9,5 @@ endif
+--- a/drivers/mmc/card/Makefile
++++ b/drivers/mmc/card/Makefile
+@@ -9,3 +9,5 @@
obj-$(CONFIG_MMC_BLOCK) += mmc_block.o
mmc_block-objs := block.o queue.o
+obj-$(CONFIG_SDIO_UART) += sdio_uart.o
+
-Index: linux-2.6.23.17/drivers/mmc/card/block.c
-===================================================================
---- linux-2.6.23.17.orig/drivers/mmc/card/block.c
-+++ linux-2.6.23.17/drivers/mmc/card/block.c
+--- a/drivers/mmc/card/block.c
++++ b/drivers/mmc/card/block.c
@@ -44,6 +44,9 @@
* max 8 partitions per card
*/
/*
* There is one mmc_blk_data per slot.
-@@ -80,6 +83,9 @@ static void mmc_blk_put(struct mmc_blk_d
+@@ -80,6 +83,9 @@
mutex_lock(&open_lock);
md->usage--;
if (md->usage == 0) {
put_disk(md->disk);
kfree(md);
}
-@@ -151,17 +157,19 @@ static u32 mmc_sd_num_wr_blocks(struct m
+@@ -151,17 +157,19 @@
cmd.opcode = MMC_APP_CMD;
cmd.arg = card->rca << 16;
memset(&data, 0, sizeof(struct mmc_data));
-@@ -192,7 +200,7 @@ static u32 mmc_sd_num_wr_blocks(struct m
+@@ -192,7 +200,7 @@
mmc_wait_for_req(card->host, &mrq);
return (u32)-1;
blocks = ntohl(blocks);
-@@ -220,17 +228,15 @@ static int mmc_blk_issue_rq(struct mmc_q
+@@ -220,17 +228,15 @@
brq.cmd.arg = req->sector;
if (!mmc_card_blockaddr(card))
brq.cmd.arg <<= 9;
/*
* If the host doesn't support multiple block writes, force
* block writes to single block. SD cards are excepted from
-@@ -243,8 +249,12 @@ static int mmc_blk_issue_rq(struct mmc_q
+@@ -243,8 +249,12 @@
brq.data.blocks = 1;
if (brq.data.blocks > 1) {
readcmd = MMC_READ_MULTIPLE_BLOCK;
writecmd = MMC_WRITE_MULTIPLE_BLOCK;
} else {
-@@ -261,6 +271,8 @@ static int mmc_blk_issue_rq(struct mmc_q
+@@ -261,6 +271,8 @@
brq.data.flags |= MMC_DATA_WRITE;
}
brq.data.sg = mq->sg;
brq.data.sg_len = mmc_queue_map_sg(mq);
-@@ -302,7 +314,7 @@ static int mmc_blk_issue_rq(struct mmc_q
+@@ -302,7 +314,7 @@
goto cmd_err;
}
do {
int err;
-@@ -315,7 +327,13 @@ static int mmc_blk_issue_rq(struct mmc_q
+@@ -315,7 +327,13 @@
req->rq_disk->disk_name, err);
goto cmd_err;
}
#if 0
if (cmd.resp[0] & ~0x00000900)
-@@ -394,9 +412,6 @@ static int mmc_blk_issue_rq(struct mmc_q
+@@ -394,9 +412,6 @@
return 0;
}
static inline int mmc_blk_readonly(struct mmc_card *card)
{
-@@ -510,7 +525,7 @@ mmc_blk_set_blksize(struct mmc_blk_data
+@@ -510,7 +525,7 @@
mmc_claim_host(card->host);
cmd.opcode = MMC_SET_BLOCKLEN;
cmd.arg = 1 << md->block_bits;
err = mmc_wait_for_cmd(card->host, &cmd, 5);
mmc_release_host(card->host);
-@@ -562,17 +577,12 @@ static void mmc_blk_remove(struct mmc_ca
+@@ -562,17 +577,12 @@
struct mmc_blk_data *md = mmc_get_drvdata(card);
if (md) {
mmc_blk_put(md);
}
mmc_set_drvdata(card, NULL);
-Index: linux-2.6.23.17/drivers/mmc/card/queue.c
-===================================================================
---- linux-2.6.23.17.orig/drivers/mmc/card/queue.c
-+++ linux-2.6.23.17/drivers/mmc/card/queue.c
+--- a/drivers/mmc/card/queue.c
++++ b/drivers/mmc/card/queue.c
@@ -13,6 +13,7 @@
#include <linux/blkdev.h>
#include <linux/freezer.h>
/*
* Prepare a MMC request. This just filters out odd stuff.
*/
-@@ -159,6 +166,7 @@ int mmc_init_queue(struct mmc_queue *mq,
+@@ -159,6 +166,7 @@
ret = -ENOMEM;
goto cleanup_queue;
}
mq->bounce_sg = kmalloc(sizeof(struct scatterlist) *
bouncesz / 512, GFP_KERNEL);
-@@ -166,6 +174,7 @@ int mmc_init_queue(struct mmc_queue *mq,
+@@ -166,6 +174,7 @@
ret = -ENOMEM;
goto cleanup_queue;
}
}
}
#endif
-@@ -183,6 +192,7 @@ int mmc_init_queue(struct mmc_queue *mq,
+@@ -183,6 +192,7 @@
ret = -ENOMEM;
goto cleanup_queue;
}
}
init_MUTEX(&mq->thread_sem);
-@@ -302,12 +312,12 @@ static void copy_sg(struct scatterlist *
+@@ -302,12 +312,12 @@
BUG_ON(dst_len == 0);
if (dst_size == 0) {
src_size = src->length;
}
-@@ -353,9 +363,7 @@ unsigned int mmc_queue_map_sg(struct mmc
+@@ -353,9 +363,7 @@
return 1;
}
while (sg_len) {
mq->sg[0].length += mq->bounce_sg[sg_len - 1].length;
-Index: linux-2.6.23.17/drivers/mmc/card/sdio_uart.c
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/drivers/mmc/card/sdio_uart.c
++++ b/drivers/mmc/card/sdio_uart.c
@@ -0,0 +1,1158 @@
+/*
+ * linux/drivers/mmc/card/sdio_uart.c - SDIO UART/GPS driver
+
+MODULE_AUTHOR("Nicolas Pitre");
+MODULE_LICENSE("GPL");
-Index: linux-2.6.23.17/drivers/mmc/core/Makefile
-===================================================================
---- linux-2.6.23.17.orig/drivers/mmc/core/Makefile
-+++ linux-2.6.23.17/drivers/mmc/core/Makefile
-@@ -8,5 +8,7 @@ endif
+--- a/drivers/mmc/core/Makefile
++++ b/drivers/mmc/core/Makefile
+@@ -8,5 +8,7 @@
obj-$(CONFIG_MMC) += mmc_core.o
mmc_core-y := core.o sysfs.o bus.o host.o \
-Index: linux-2.6.23.17/drivers/mmc/host/sdhci.c
-===================================================================
---- linux-2.6.23.17.orig/drivers/mmc/host/sdhci.c
-+++ linux-2.6.23.17/drivers/mmc/host/sdhci.c
-@@ -481,16 +481,16 @@ static void sdhci_finish_data(struct sdh
+--- a/drivers/mmc/host/sdhci.c
++++ b/drivers/mmc/host/sdhci.c
+@@ -481,16 +481,16 @@
* Controller doesn't count down when in single block mode.
*/
if (data->blocks == 1)
}
if (data->stop) {
-@@ -498,7 +498,7 @@ static void sdhci_finish_data(struct sdh
+@@ -498,7 +498,7 @@
* The controller needs a reset of internal state machines
* upon error conditions.
*/
sdhci_reset(host, SDHCI_RESET_CMD);
sdhci_reset(host, SDHCI_RESET_DATA);
}
-@@ -533,7 +533,7 @@ static void sdhci_send_command(struct sd
+@@ -533,7 +533,7 @@
printk(KERN_ERR "%s: Controller never released "
"inhibit bit(s).\n", mmc_hostname(host->mmc));
sdhci_dumpregs(host);
tasklet_schedule(&host->finish_tasklet);
return;
}
-@@ -554,7 +554,7 @@ static void sdhci_send_command(struct sd
+@@ -554,7 +554,7 @@
if ((cmd->flags & MMC_RSP_136) && (cmd->flags & MMC_RSP_BUSY)) {
printk(KERN_ERR "%s: Unsupported response type!\n",
mmc_hostname(host->mmc));
tasklet_schedule(&host->finish_tasklet);
return;
}
-@@ -601,7 +601,7 @@ static void sdhci_finish_command(struct
+@@ -601,7 +601,7 @@
}
}
if (host->data && host->data_early)
sdhci_finish_data(host);
-@@ -722,7 +722,7 @@ static void sdhci_request(struct mmc_hos
+@@ -722,7 +722,7 @@
host->mrq = mrq;
if (!(readl(host->ioaddr + SDHCI_PRESENT_STATE) & SDHCI_CARD_PRESENT)) {
tasklet_schedule(&host->finish_tasklet);
} else
sdhci_send_command(host, mrq->cmd);
-@@ -831,7 +831,7 @@ static void sdhci_tasklet_card(unsigned
+@@ -831,7 +831,7 @@
sdhci_reset(host, SDHCI_RESET_CMD);
sdhci_reset(host, SDHCI_RESET_DATA);
tasklet_schedule(&host->finish_tasklet);
}
}
-@@ -859,9 +859,9 @@ static void sdhci_tasklet_finish(unsigne
+@@ -859,9 +859,9 @@
* The controller needs a reset of internal state machines
* upon error conditions.
*/
/* Some controllers need this kick or reset won't work here */
if (host->chip->quirks & SDHCI_QUIRK_CLOCK_BEFORE_RESET) {
-@@ -906,13 +906,13 @@ static void sdhci_timeout_timer(unsigned
+@@ -906,13 +906,13 @@
sdhci_dumpregs(host);
if (host->data) {
tasklet_schedule(&host->finish_tasklet);
}
-@@ -941,13 +941,12 @@ static void sdhci_cmd_irq(struct sdhci_h
+@@ -941,13 +941,12 @@
}
if (intmask & SDHCI_INT_TIMEOUT)
tasklet_schedule(&host->finish_tasklet);
else if (intmask & SDHCI_INT_RESPONSE)
sdhci_finish_command(host);
-@@ -974,13 +973,11 @@ static void sdhci_data_irq(struct sdhci_
+@@ -974,13 +973,11 @@
}
if (intmask & SDHCI_INT_DATA_TIMEOUT)
sdhci_finish_data(host);
else {
if (intmask & (SDHCI_INT_DATA_AVAIL | SDHCI_INT_SPACE_AVAIL))
-@@ -1312,7 +1309,7 @@ static int __devinit sdhci_probe_slot(st
+@@ -1312,7 +1309,7 @@
mmc->ops = &sdhci_ops;
mmc->f_min = host->max_clk / 256;
mmc->f_max = host->max_clk;
-Index: linux-2.6.23.17/drivers/leds/Kconfig
-===================================================================
---- linux-2.6.23.17.orig/drivers/leds/Kconfig
-+++ linux-2.6.23.17/drivers/leds/Kconfig
-@@ -133,4 +133,8 @@ config LEDS_TRIGGER_HEARTBEAT
+--- a/drivers/leds/Kconfig
++++ b/drivers/leds/Kconfig
+@@ -133,4 +133,8 @@
load average.
If unsure, say Y.
+ depends on LEDS_TRIGGERS
+
endif # NEW_LEDS
-Index: linux-2.6.23.17/drivers/leds/Makefile
-===================================================================
---- linux-2.6.23.17.orig/drivers/leds/Makefile
-+++ linux-2.6.23.17/drivers/leds/Makefile
-@@ -22,3 +22,4 @@ obj-$(CONFIG_LEDS_GPIO) += leds-gpio.o
+--- a/drivers/leds/Makefile
++++ b/drivers/leds/Makefile
+@@ -22,3 +22,4 @@
obj-$(CONFIG_LEDS_TRIGGER_TIMER) += ledtrig-timer.o
obj-$(CONFIG_LEDS_TRIGGER_IDE_DISK) += ledtrig-ide-disk.o
obj-$(CONFIG_LEDS_TRIGGER_HEARTBEAT) += ledtrig-heartbeat.o
-Index: linux-2.6.23.17/drivers/leds/Kconfig
-===================================================================
---- linux-2.6.23.17.orig/drivers/leds/Kconfig
-+++ linux-2.6.23.17/drivers/leds/Kconfig
-@@ -81,6 +81,12 @@ config LEDS_WRAP
+--- a/drivers/leds/Kconfig
++++ b/drivers/leds/Kconfig
+@@ -81,6 +81,12 @@
help
This option enables support for the PCEngines WRAP programmable LEDs.
config LEDS_H1940
tristate "LED Support for iPAQ H1940 device"
depends LEDS_CLASS && ARCH_H1940
-Index: linux-2.6.23.17/drivers/leds/Makefile
-===================================================================
---- linux-2.6.23.17.orig/drivers/leds/Makefile
-+++ linux-2.6.23.17/drivers/leds/Makefile
-@@ -14,6 +14,7 @@ obj-$(CONFIG_LEDS_S3C24XX) += leds-s3c2
+--- a/drivers/leds/Makefile
++++ b/drivers/leds/Makefile
+@@ -14,6 +14,7 @@
obj-$(CONFIG_LEDS_AMS_DELTA) += leds-ams-delta.o
obj-$(CONFIG_LEDS_NET48XX) += leds-net48xx.o
obj-$(CONFIG_LEDS_WRAP) += leds-wrap.o
-Index: linux-2.6.23.17/drivers/leds/Kconfig
-===================================================================
---- linux-2.6.23.17.orig/drivers/leds/Kconfig
-+++ linux-2.6.23.17/drivers/leds/Kconfig
-@@ -143,4 +143,11 @@ config LEDS_TRIGGER_MORSE
+--- a/drivers/leds/Kconfig
++++ b/drivers/leds/Kconfig
+@@ -143,4 +143,11 @@
tristate "LED Morse Trigger"
depends on LEDS_TRIGGERS
+ If unsure, say Y.
+
endif # NEW_LEDS
-Index: linux-2.6.23.17/drivers/leds/Makefile
-===================================================================
---- linux-2.6.23.17.orig/drivers/leds/Makefile
-+++ linux-2.6.23.17/drivers/leds/Makefile
-@@ -24,3 +24,4 @@ obj-$(CONFIG_LEDS_TRIGGER_TIMER) += ledt
+--- a/drivers/leds/Makefile
++++ b/drivers/leds/Makefile
+@@ -24,3 +24,4 @@
obj-$(CONFIG_LEDS_TRIGGER_IDE_DISK) += ledtrig-ide-disk.o
obj-$(CONFIG_LEDS_TRIGGER_HEARTBEAT) += ledtrig-heartbeat.o
obj-$(CONFIG_LEDS_TRIGGER_MORSE) += ledtrig-morse.o
-Index: linux-2.6.23.17/drivers/leds/Kconfig
-===================================================================
---- linux-2.6.23.17.orig/drivers/leds/Kconfig
-+++ linux-2.6.23.17/drivers/leds/Kconfig
-@@ -150,4 +150,11 @@ config LEDS_TRIGGER_DEFAULT_ON
+--- a/drivers/leds/Kconfig
++++ b/drivers/leds/Kconfig
+@@ -150,4 +150,11 @@
This allows LEDs to be initialised in the ON state.
If unsure, say Y.
+ If unsure, say Y.
+
endif # NEW_LEDS
-Index: linux-2.6.23.17/drivers/leds/Makefile
-===================================================================
---- linux-2.6.23.17.orig/drivers/leds/Makefile
-+++ linux-2.6.23.17/drivers/leds/Makefile
-@@ -25,3 +25,4 @@ obj-$(CONFIG_LEDS_TRIGGER_IDE_DISK) += l
+--- a/drivers/leds/Makefile
++++ b/drivers/leds/Makefile
+@@ -25,3 +25,4 @@
obj-$(CONFIG_LEDS_TRIGGER_HEARTBEAT) += ledtrig-heartbeat.o
obj-$(CONFIG_LEDS_TRIGGER_MORSE) += ledtrig-morse.o
obj-$(CONFIG_LEDS_TRIGGER_DEFAULT_ON) += ledtrig-default-on.o
-Index: linux-2.6.23.17/drivers/input/misc/Kconfig
-===================================================================
---- linux-2.6.23.17.orig/drivers/input/misc/Kconfig
-+++ linux-2.6.23.17/drivers/input/misc/Kconfig
-@@ -183,4 +183,20 @@ config HP_SDC_RTC
+--- a/drivers/input/misc/Kconfig
++++ b/drivers/input/misc/Kconfig
+@@ -183,4 +183,20 @@
Say Y here if you want to support the built-in real time clock
of the HP SDC controller.
+ module will be called gpio-buttons.
+
endif
-Index: linux-2.6.23.17/drivers/input/misc/Makefile
-===================================================================
---- linux-2.6.23.17.orig/drivers/input/misc/Makefile
-+++ linux-2.6.23.17/drivers/input/misc/Makefile
-@@ -18,3 +18,4 @@ obj-$(CONFIG_INPUT_POWERMATE) += powerm
+--- a/drivers/input/misc/Makefile
++++ b/drivers/input/misc/Makefile
+@@ -18,3 +18,4 @@
obj-$(CONFIG_INPUT_YEALINK) += yealink.o
obj-$(CONFIG_HP_SDC_RTC) += hp_sdc_rtc.o
obj-$(CONFIG_INPUT_UINPUT) += uinput.o
-Index: linux-2.6.23.17/fs/Kconfig
-===================================================================
---- linux-2.6.23.17.orig/fs/Kconfig
-+++ linux-2.6.23.17/fs/Kconfig
-@@ -419,6 +419,7 @@ config FS_POSIX_ACL
+--- a/fs/Kconfig
++++ b/fs/Kconfig
+@@ -419,6 +419,7 @@
source "fs/xfs/Kconfig"
source "fs/gfs2/Kconfig"
config OCFS2_FS
tristate "OCFS2 file system support"
-Index: linux-2.6.23.17/fs/Makefile
-===================================================================
---- linux-2.6.23.17.orig/fs/Makefile
-+++ linux-2.6.23.17/fs/Makefile
-@@ -120,3 +120,4 @@ obj-$(CONFIG_HPPFS) += hppfs/
+--- a/fs/Makefile
++++ b/fs/Makefile
+@@ -120,3 +120,4 @@
obj-$(CONFIG_DEBUG_FS) += debugfs/
obj-$(CONFIG_OCFS2_FS) += ocfs2/
obj-$(CONFIG_GFS2_FS) += gfs2/
-Index: linux-2.6.23.17/drivers/net/phy/phy.c
-===================================================================
---- linux-2.6.23.17.orig/drivers/net/phy/phy.c
-+++ linux-2.6.23.17/drivers/net/phy/phy.c
-@@ -344,6 +344,50 @@ int phy_ethtool_gset(struct phy_device *
+--- a/drivers/net/phy/phy.c
++++ b/drivers/net/phy/phy.c
+@@ -344,6 +344,50 @@
}
EXPORT_SYMBOL(phy_ethtool_gset);
/**
* phy_mii_ioctl - generic PHY MII ioctl interface
* @phydev: the phy_device struct
-Index: linux-2.6.23.17/include/linux/phy.h
-===================================================================
---- linux-2.6.23.17.orig/include/linux/phy.h
-+++ linux-2.6.23.17/include/linux/phy.h
-@@ -393,6 +393,7 @@ void phy_start_machine(struct phy_device
+--- a/include/linux/phy.h
++++ b/include/linux/phy.h
+@@ -393,6 +393,7 @@
void phy_stop_machine(struct phy_device *phydev);
int phy_ethtool_sset(struct phy_device *phydev, struct ethtool_cmd *cmd);
int phy_ethtool_gset(struct phy_device *phydev, struct ethtool_cmd *cmd);
-Index: linux-2.6.23.17/drivers/net/phy/mdio_bus.c
-===================================================================
---- linux-2.6.23.17.orig/drivers/net/phy/mdio_bus.c
-+++ linux-2.6.23.17/drivers/net/phy/mdio_bus.c
-@@ -131,6 +131,9 @@ static int mdio_bus_match(struct device
+--- a/drivers/net/phy/mdio_bus.c
++++ b/drivers/net/phy/mdio_bus.c
+@@ -131,6 +131,9 @@
struct phy_device *phydev = to_phy_device(dev);
struct phy_driver *phydrv = to_phy_driver(drv);
return ((phydrv->phy_id & phydrv->phy_id_mask) ==
(phydev->phy_id & phydrv->phy_id_mask));
}
-Index: linux-2.6.23.17/include/linux/phy.h
-===================================================================
---- linux-2.6.23.17.orig/include/linux/phy.h
-+++ linux-2.6.23.17/include/linux/phy.h
-@@ -319,6 +319,11 @@ struct phy_driver {
+--- a/include/linux/phy.h
++++ b/include/linux/phy.h
+@@ -319,6 +319,11 @@
u32 features;
u32 flags;
-Index: linux-2.6.23.17/drivers/net/phy/Kconfig
-===================================================================
---- linux-2.6.23.17.orig/drivers/net/phy/Kconfig
-+++ linux-2.6.23.17/drivers/net/phy/Kconfig
-@@ -60,6 +60,11 @@ config ICPLUS_PHY
+--- a/drivers/net/phy/Kconfig
++++ b/drivers/net/phy/Kconfig
+@@ -60,6 +60,11 @@
---help---
Currently supports the IP175C PHY.
config FIXED_PHY
tristate "Drivers for PHY emulation on fixed speed/link"
---help---
-Index: linux-2.6.23.17/drivers/net/phy/Makefile
-===================================================================
---- linux-2.6.23.17.orig/drivers/net/phy/Makefile
-+++ linux-2.6.23.17/drivers/net/phy/Makefile
-@@ -12,4 +12,5 @@ obj-$(CONFIG_SMSC_PHY) += smsc.o
+--- a/drivers/net/phy/Makefile
++++ b/drivers/net/phy/Makefile
+@@ -12,4 +12,5 @@
obj-$(CONFIG_VITESSE_PHY) += vitesse.o
obj-$(CONFIG_BROADCOM_PHY) += broadcom.o
obj-$(CONFIG_ICPLUS_PHY) += icplus.o
-Index: linux-2.6.23.17/drivers/net/phy/phy_device.c
-===================================================================
---- linux-2.6.23.17.orig/drivers/net/phy/phy_device.c
-+++ linux-2.6.23.17/drivers/net/phy/phy_device.c
-@@ -44,6 +44,18 @@ static struct phy_driver genphy_driver;
+--- a/drivers/net/phy/phy_device.c
++++ b/drivers/net/phy/phy_device.c
+@@ -44,6 +44,18 @@
extern int mdio_bus_init(void);
extern void mdio_bus_exit(void);
struct phy_device* phy_device_create(struct mii_bus *bus, int addr, int phy_id)
{
struct phy_device *dev;
-@@ -67,6 +79,8 @@ struct phy_device* phy_device_create(str
+@@ -67,6 +79,8 @@
dev->bus = bus;
dev->state = PHY_DOWN;
spin_lock_init(&dev->lock);
-Index: linux-2.6.23.17/include/linux/phy.h
-===================================================================
---- linux-2.6.23.17.orig/include/linux/phy.h
-+++ linux-2.6.23.17/include/linux/phy.h
-@@ -289,6 +289,17 @@ struct phy_device {
+--- a/include/linux/phy.h
++++ b/include/linux/phy.h
+@@ -289,6 +289,17 @@
void (*adjust_link)(struct net_device *dev);
void (*adjust_state)(struct net_device *dev);
};
#define to_phy_device(d) container_of(d, struct phy_device, dev)
-Index: linux-2.6.23.17/include/linux/netdevice.h
-===================================================================
---- linux-2.6.23.17.orig/include/linux/netdevice.h
-+++ linux-2.6.23.17/include/linux/netdevice.h
-@@ -426,6 +426,7 @@ struct net_device
+--- a/include/linux/netdevice.h
++++ b/include/linux/netdevice.h
+@@ -426,6 +426,7 @@
void *ax25_ptr; /* AX.25 specific data */
struct wireless_dev *ieee80211_ptr; /* IEEE 802.11 specific data,
assign before registering */
-Index: linux-2.6.23.17/drivers/net/phy/Kconfig
-===================================================================
---- linux-2.6.23.17.orig/drivers/net/phy/Kconfig
-+++ linux-2.6.23.17/drivers/net/phy/Kconfig
-@@ -65,6 +65,12 @@ config ADM6996_PHY
+--- a/drivers/net/phy/Kconfig
++++ b/drivers/net/phy/Kconfig
+@@ -65,6 +65,12 @@
---help---
Currently supports the ADM6996F switch
config FIXED_PHY
tristate "Drivers for PHY emulation on fixed speed/link"
---help---
-Index: linux-2.6.23.17/drivers/net/phy/Makefile
-===================================================================
---- linux-2.6.23.17.orig/drivers/net/phy/Makefile
-+++ linux-2.6.23.17/drivers/net/phy/Makefile
-@@ -13,4 +13,5 @@ obj-$(CONFIG_VITESSE_PHY) += vitesse.o
+--- a/drivers/net/phy/Makefile
++++ b/drivers/net/phy/Makefile
+@@ -13,4 +13,5 @@
obj-$(CONFIG_BROADCOM_PHY) += broadcom.o
obj-$(CONFIG_ICPLUS_PHY) += icplus.o
obj-$(CONFIG_ADM6996_PHY) += adm6996.o
+obj-$(CONFIG_MVSWITCH_PHY) += mvswitch.o
obj-$(CONFIG_FIXED_PHY) += fixed.o
-Index: linux-2.6.23.17/drivers/net/phy/mdio_bus.c
-===================================================================
---- linux-2.6.23.17.orig/drivers/net/phy/mdio_bus.c
-+++ linux-2.6.23.17/drivers/net/phy/mdio_bus.c
+--- a/drivers/net/phy/mdio_bus.c
++++ b/drivers/net/phy/mdio_bus.c
@@ -35,6 +35,12 @@
#include <asm/irq.h>
#include <asm/uaccess.h>
/**
* mdiobus_register - bring up all the PHYs on a given bus and attach them to bus
* @bus: target mii_bus
-@@ -85,6 +91,7 @@ int mdiobus_register(struct mii_bus *bus
+@@ -85,6 +91,7 @@
phydev->dev.parent = bus->dev;
phydev->dev.bus = &mdio_bus_type;
-Index: linux-2.6.23.17/init/main.c
-===================================================================
---- linux-2.6.23.17.orig/init/main.c
-+++ linux-2.6.23.17/init/main.c
-@@ -780,7 +780,7 @@ static int noinline init_post(void)
+--- a/init/main.c
++++ b/init/main.c
+@@ -780,7 +780,7 @@
numa_default_policy();
if (sys_open((const char __user *) "/dev/console", O_RDWR, 0) < 0)
-Index: linux-2.6.23.17/drivers/usb/serial/usb-serial.c
-===================================================================
---- linux-2.6.23.17.orig/drivers/usb/serial/usb-serial.c
-+++ linux-2.6.23.17/drivers/usb/serial/usb-serial.c
-@@ -58,6 +58,7 @@ static struct usb_driver usb_serial_driv
+--- a/drivers/usb/serial/usb-serial.c
++++ b/drivers/usb/serial/usb-serial.c
+@@ -58,6 +58,7 @@
drivers depend on it.
*/
static int debug;
static struct usb_serial *serial_table[SERIAL_TTY_MINORS]; /* initially all NULL */
static DEFINE_MUTEX(table_lock);
-@@ -866,7 +867,7 @@ int usb_serial_probe(struct usb_interfac
+@@ -866,7 +867,7 @@
dev_err(&interface->dev, "No free urbs available\n");
goto probe_error;
}
port->bulk_in_size = buffer_size;
port->bulk_in_endpointAddress = endpoint->bEndpointAddress;
port->bulk_in_buffer = kmalloc (buffer_size, GFP_KERNEL);
-@@ -1276,3 +1277,5 @@ MODULE_LICENSE("GPL");
+@@ -1276,3 +1277,5 @@
module_param(debug, bool, S_IRUGO | S_IWUSR);
MODULE_PARM_DESC(debug, "Debug enabled or not");
-Index: linux-2.6.23.17/include/linux/time.h
-===================================================================
---- linux-2.6.23.17.orig/include/linux/time.h
-+++ linux-2.6.23.17/include/linux/time.h
+--- a/include/linux/time.h
++++ b/include/linux/time.h
@@ -1,6 +1,10 @@
#ifndef _LINUX_TIME_H
#define _LINUX_TIME_H
#include <linux/types.h>
#ifdef __KERNEL__
-@@ -227,4 +231,6 @@ struct itimerval {
+@@ -227,4 +231,6 @@
*/
#define TIMER_ABSTIME 0x01
+#endif /* __KERNEL__ DEBIAN */
+
#endif
-Index: linux-2.6.23.17/include/linux/types.h
-===================================================================
---- linux-2.6.23.17.orig/include/linux/types.h
-+++ linux-2.6.23.17/include/linux/types.h
+--- a/include/linux/types.h
++++ b/include/linux/types.h
@@ -1,6 +1,14 @@
#ifndef _LINUX_TYPES_H
#define _LINUX_TYPES_H
#ifdef __KERNEL__
#define BITS_TO_LONGS(bits) \
-@@ -162,6 +170,8 @@ typedef unsigned long blkcnt_t;
+@@ -162,6 +170,8 @@
#endif /* __KERNEL_STRICT_NAMES */
-Index: linux-2.6.23.17/scripts/genksyms/parse.c_shipped
-===================================================================
---- linux-2.6.23.17.orig/scripts/genksyms/parse.c_shipped
-+++ linux-2.6.23.17/scripts/genksyms/parse.c_shipped
+--- a/scripts/genksyms/parse.c_shipped
++++ b/scripts/genksyms/parse.c_shipped
@@ -144,7 +144,9 @@
#include "genksyms.h"
static int is_typedef;
-Index: linux-2.6.23.17/scripts/genksyms/parse.y
-===================================================================
---- linux-2.6.23.17.orig/scripts/genksyms/parse.y
-+++ linux-2.6.23.17/scripts/genksyms/parse.y
+--- a/scripts/genksyms/parse.y
++++ b/scripts/genksyms/parse.y
@@ -24,7 +24,9 @@
%{
#include "genksyms.h"
static int is_typedef;
-Index: linux-2.6.23.17/scripts/kallsyms.c
-===================================================================
---- linux-2.6.23.17.orig/scripts/kallsyms.c
-+++ linux-2.6.23.17/scripts/kallsyms.c
+--- a/scripts/kallsyms.c
++++ b/scripts/kallsyms.c
@@ -28,6 +28,35 @@
#include <stdlib.h>
#include <string.h>
#define KSYM_NAME_LEN 128
-Index: linux-2.6.23.17/scripts/kconfig/Makefile
-===================================================================
---- linux-2.6.23.17.orig/scripts/kconfig/Makefile
-+++ linux-2.6.23.17/scripts/kconfig/Makefile
-@@ -88,6 +88,9 @@ check-lxdialog := $(srctree)/$(src)/lxd
+--- a/scripts/kconfig/Makefile
++++ b/scripts/kconfig/Makefile
+@@ -88,6 +88,9 @@
# we really need to do so. (Do not call gcc as part of make mrproper)
HOST_EXTRACFLAGS = $(shell $(CONFIG_SHELL) $(check-lxdialog) -ccflags)
HOST_LOADLIBES = $(shell $(CONFIG_SHELL) $(check-lxdialog) -ldflags $(HOSTCC))
HOST_EXTRACFLAGS += -DLOCALE
-Index: linux-2.6.23.17/scripts/mod/mk_elfconfig.c
-===================================================================
---- linux-2.6.23.17.orig/scripts/mod/mk_elfconfig.c
-+++ linux-2.6.23.17/scripts/mod/mk_elfconfig.c
+--- a/scripts/mod/mk_elfconfig.c
++++ b/scripts/mod/mk_elfconfig.c
@@ -1,7 +1,11 @@
#include <stdio.h>
#include <stdlib.h>
int
main(int argc, char **argv)
-Index: linux-2.6.23.17/scripts/mod/modpost.h
-===================================================================
---- linux-2.6.23.17.orig/scripts/mod/modpost.h
-+++ linux-2.6.23.17/scripts/mod/modpost.h
+--- a/scripts/mod/modpost.h
++++ b/scripts/mod/modpost.h
@@ -7,7 +7,11 @@
#include <sys/mman.h>
#include <fcntl.h>
-Index: linux-2.6.23.17/include/linux/stddef.h
-===================================================================
---- linux-2.6.23.17.orig/include/linux/stddef.h
-+++ linux-2.6.23.17/include/linux/stddef.h
-@@ -16,6 +16,7 @@ enum {
+--- a/include/linux/stddef.h
++++ b/include/linux/stddef.h
+@@ -16,6 +16,7 @@
false = 0,
true = 1
};
#undef offsetof
#ifdef __compiler_offsetof
-@@ -23,6 +24,5 @@ enum {
+@@ -23,6 +24,5 @@
#else
#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
#endif
-Index: linux-2.6.23.17/scripts/gen_initramfs_list.sh
-===================================================================
---- linux-2.6.23.17.orig/scripts/gen_initramfs_list.sh
-+++ linux-2.6.23.17/scripts/gen_initramfs_list.sh
-@@ -125,7 +125,7 @@ parse() {
+--- a/scripts/gen_initramfs_list.sh
++++ b/scripts/gen_initramfs_list.sh
+@@ -125,7 +125,7 @@
str="${ftype} ${name} ${location} ${str}"
;;
"nod")
local maj=`field 5 ${dev}`
local min=`field 6 ${dev}`
maj=${maj%,}
-@@ -135,7 +135,7 @@ parse() {
+@@ -135,7 +135,7 @@
str="${ftype} ${name} ${str} ${dev} ${maj} ${min}"
;;
"slink")
-Index: linux-2.6.23.17/arch/i386/boot/tools/build.c
-===================================================================
---- linux-2.6.23.17.orig/arch/i386/boot/tools/build.c
-+++ linux-2.6.23.17/arch/i386/boot/tools/build.c
+--- a/arch/i386/boot/tools/build.c
++++ b/arch/i386/boot/tools/build.c
@@ -29,7 +29,6 @@
#include <stdarg.h>
#include <sys/types.h>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
---
-Index: linux-2.6.23.17/arch/arm/Makefile
-===================================================================
---- linux-2.6.23.17.orig/arch/arm/Makefile
-+++ linux-2.6.23.17/arch/arm/Makefile
+--- a/arch/arm/Makefile
++++ b/arch/arm/Makefile
@@ -12,7 +12,7 @@
LDFLAGS_vmlinux :=-p --no-undefined -X
-Index: linux-2.6.23.17/arch/arm/Kconfig
-===================================================================
---- linux-2.6.23.17.orig/arch/arm/Kconfig
-+++ linux-2.6.23.17/arch/arm/Kconfig
-@@ -1039,6 +1039,8 @@ source "drivers/mfd/Kconfig"
+--- a/arch/arm/Kconfig
++++ b/arch/arm/Kconfig
+@@ -1039,6 +1039,8 @@
source "drivers/leds/Kconfig"
source "drivers/media/Kconfig"
source "drivers/video/Kconfig"
-Index: linux-2.6.23.17/drivers/Kconfig
-===================================================================
---- linux-2.6.23.17.orig/drivers/Kconfig
-+++ linux-2.6.23.17/drivers/Kconfig
-@@ -76,6 +76,8 @@ source "drivers/mmc/Kconfig"
+--- a/drivers/Kconfig
++++ b/drivers/Kconfig
+@@ -76,6 +76,8 @@
source "drivers/leds/Kconfig"
source "drivers/infiniband/Kconfig"
source "drivers/edac/Kconfig"
-Index: linux-2.6.23.17/drivers/Makefile
-===================================================================
---- linux-2.6.23.17.orig/drivers/Makefile
-+++ linux-2.6.23.17/drivers/Makefile
-@@ -89,3 +89,4 @@ obj-$(CONFIG_DMA_ENGINE) += dma/
+--- a/drivers/Makefile
++++ b/drivers/Makefile
+@@ -89,3 +89,4 @@
obj-$(CONFIG_HID) += hid/
obj-$(CONFIG_PPC_PS3) += ps3/
obj-$(CONFIG_OF) += of/
---
-Index: linux-2.6.23.17/include/asm-ppc/io.h
-===================================================================
---- linux-2.6.23.17.orig/include/asm-ppc/io.h
-+++ linux-2.6.23.17/include/asm-ppc/io.h
-@@ -453,11 +453,21 @@ static inline unsigned int ioread16(void
+--- a/include/asm-ppc/io.h
++++ b/include/asm-ppc/io.h
+@@ -453,11 +453,21 @@
return readw(addr);
}
static inline void iowrite8(u8 val, void __iomem *addr)
{
writeb(val, addr);
-@@ -468,11 +478,21 @@ static inline void iowrite16(u16 val, vo
+@@ -468,11 +478,21 @@
writew(val, addr);
}
-Index: linux-2.6.23.17/drivers/spi/Kconfig
-===================================================================
---- linux-2.6.23.17.orig/drivers/spi/Kconfig
-+++ linux-2.6.23.17/drivers/spi/Kconfig
-@@ -100,6 +100,11 @@ config SPI_BUTTERFLY
+--- a/drivers/spi/Kconfig
++++ b/drivers/spi/Kconfig
+@@ -100,6 +100,11 @@
inexpensive battery powered microcontroller evaluation board.
This same cable can be used to flash new firmware.
config SPI_IMX
tristate "Freescale iMX SPI controller"
depends on SPI_MASTER && ARCH_IMX && EXPERIMENTAL
-Index: linux-2.6.23.17/drivers/spi/Makefile
-===================================================================
---- linux-2.6.23.17.orig/drivers/spi/Makefile
-+++ linux-2.6.23.17/drivers/spi/Makefile
-@@ -16,6 +16,7 @@ obj-$(CONFIG_SPI_BFIN) += spi_bfin5xx.
+--- a/drivers/spi/Makefile
++++ b/drivers/spi/Makefile
+@@ -16,6 +16,7 @@
obj-$(CONFIG_SPI_BITBANG) += spi_bitbang.o
obj-$(CONFIG_SPI_AU1550) += au1550_spi.o
obj-$(CONFIG_SPI_BUTTERFLY) += spi_butterfly.o
-Index: linux-2.6.23.17/drivers/w1/masters/Kconfig
-===================================================================
---- linux-2.6.23.17.orig/drivers/w1/masters/Kconfig
-+++ linux-2.6.23.17/drivers/w1/masters/Kconfig
-@@ -42,5 +42,15 @@ config W1_MASTER_DS1WM
+--- a/drivers/w1/masters/Kconfig
++++ b/drivers/w1/masters/Kconfig
+@@ -42,5 +42,15 @@
in HP iPAQ devices like h5xxx, h2200, and ASIC3-based like
hx4700.
+
endmenu
-Index: linux-2.6.23.17/drivers/w1/masters/Makefile
-===================================================================
---- linux-2.6.23.17.orig/drivers/w1/masters/Makefile
-+++ linux-2.6.23.17/drivers/w1/masters/Makefile
-@@ -6,3 +6,4 @@ obj-$(CONFIG_W1_MASTER_MATROX) += matro
+--- a/drivers/w1/masters/Makefile
++++ b/drivers/w1/masters/Makefile
+@@ -6,3 +6,4 @@
obj-$(CONFIG_W1_MASTER_DS2490) += ds2490.o
obj-$(CONFIG_W1_MASTER_DS2482) += ds2482.o
obj-$(CONFIG_W1_MASTER_DS1WM) += ds1wm.o
+obj-$(CONFIG_W1_MASTER_GPIO) += w1-gpio.o
-Index: linux-2.6.23.17/drivers/w1/masters/w1-gpio.c
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/drivers/w1/masters/w1-gpio.c
++++ b/drivers/w1/masters/w1-gpio.c
@@ -0,0 +1,124 @@
+/*
+ * w1-gpio - GPIO w1 bus master driver
+MODULE_DESCRIPTION("GPIO w1 bus master driver");
+MODULE_AUTHOR("Ville Syrjala <syrjala@sci.fi>");
+MODULE_LICENSE("GPL");
-Index: linux-2.6.23.17/include/linux/w1-gpio.h
-===================================================================
--- /dev/null
-+++ linux-2.6.23.17/include/linux/w1-gpio.h
++++ b/include/linux/w1-gpio.h
@@ -0,0 +1,23 @@
+/*
+ * w1-gpio interface to platform code
This patch ports ssb to the 2.6.23 kernel.
-Index: linux-2.6.23.17/drivers/ssb/driver_mipscore.c
-===================================================================
---- linux-2.6.23.17.orig/drivers/ssb/driver_mipscore.c
-+++ linux-2.6.23.17/drivers/ssb/driver_mipscore.c
-@@ -223,3 +223,5 @@ void ssb_mipscore_init(struct ssb_mipsco
+--- a/drivers/ssb/driver_mipscore.c
++++ b/drivers/ssb/driver_mipscore.c
+@@ -223,3 +223,5 @@
ssb_mips_serial_init(mcore);
ssb_mips_flash_detect(mcore);
}
+
+EXPORT_SYMBOL(ssb_mips_irq);
-Index: linux-2.6.23.17/include/linux/mod_devicetable.h
-===================================================================
---- linux-2.6.23.17.orig/include/linux/mod_devicetable.h
-+++ linux-2.6.23.17/include/linux/mod_devicetable.h
-@@ -352,4 +352,19 @@ struct parisc_device_id {
+--- a/include/linux/mod_devicetable.h
++++ b/include/linux/mod_devicetable.h
+@@ -352,4 +352,19 @@
#define PA_HVERSION_ANY_ID 0xffff
#define PA_SVERSION_ANY_ID 0xffffffff
+#define SSB_ANY_REV 0xFF
+
#endif /* LINUX_MOD_DEVICETABLE_H */
-Index: linux-2.6.23.17/drivers/ssb/main.c
-===================================================================
---- linux-2.6.23.17.orig/drivers/ssb/main.c
-+++ linux-2.6.23.17/drivers/ssb/main.c
-@@ -321,14 +321,16 @@ static int ssb_bus_match(struct device *
+--- a/drivers/ssb/main.c
++++ b/drivers/ssb/main.c
+@@ -321,14 +321,16 @@
return 0;
}
"MODALIAS=ssb:v%04Xid%04Xrev%02X",
ssb_dev->id.vendor, ssb_dev->id.coreid,
ssb_dev->id.revision);
-Index: linux-2.6.23.17/drivers/ssb/scan.c
-===================================================================
---- linux-2.6.23.17.orig/drivers/ssb/scan.c
-+++ linux-2.6.23.17/drivers/ssb/scan.c
-@@ -391,12 +391,14 @@ int ssb_bus_scan(struct ssb_bus *bus,
+--- a/drivers/ssb/scan.c
++++ b/drivers/ssb/scan.c
+@@ -391,12 +391,14 @@
if (bus->bustype == SSB_BUSTYPE_PCI) {
/* Ignore PCI cores on PCI-E cards.
* Ignore PCI-E cores on PCI cards. */
}
}
if (bus->pcicore.dev) {
-Index: linux-2.6.23.17/drivers/ssb/driver_pcicore.c
-===================================================================
---- linux-2.6.23.17.orig/drivers/ssb/driver_pcicore.c
-+++ linux-2.6.23.17/drivers/ssb/driver_pcicore.c
-@@ -362,7 +362,7 @@ static int pcicore_is_in_hostmode(struct
+--- a/drivers/ssb/driver_pcicore.c
++++ b/drivers/ssb/driver_pcicore.c
+@@ -362,7 +362,7 @@
chipid_top != 0x5300)
return 0;